/ Hex Artifact Content
Login

Artifact a4dc0855b86ba0daeef47f3dd4cf394eda2bd0ac:


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 20 54 68 65 0a 23 20 66 6f 63  rary.  The.# foc
01b0: 75 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20  us of this file 
01c0: 69 73 20 74 65 73 74 69 6e 67 20 65 78 70 72 65  is testing expre
01d0: 73 73 69 6f 6e 73 2e 0a 23 0a 23 20 24 49 64 3a  ssions..#.# $Id:
01e0: 20 65 78 70 72 2e 74 65 73 74 2c 76 20 31 2e 35   expr.test,v 1.5
01f0: 36 20 32 30 30 37 2f 30 36 2f 32 35 20 31 37 3a  6 2007/06/25 17:
0200: 32 38 3a 30 32 20 64 72 68 20 45 78 70 20 24 0a  28:02 drh Exp $.
0210: 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69  .set testdir [fi
0220: 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76  le dirname $argv
0230: 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64  0].source $testd
0240: 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 23  ir/tester.tcl..#
0250: 20 43 72 65 61 74 65 20 61 20 74 61 62 6c 65 20   Create a table 
0260: 74 6f 20 77 6f 72 6b 20 77 69 74 68 2e 0a 23 0a  to work with..#.
0270: 65 78 65 63 73 71 6c 20 7b 43 52 45 41 54 45 20  execsql {CREATE 
0280: 54 41 42 4c 45 20 74 65 73 74 31 28 69 31 20 69  TABLE test1(i1 i
0290: 6e 74 2c 20 69 32 20 69 6e 74 2c 20 72 31 20 72  nt, i2 int, r1 r
02a0: 65 61 6c 2c 20 72 32 20 72 65 61 6c 2c 20 74 31  eal, r2 real, t1
02b0: 20 74 65 78 74 2c 20 74 32 20 74 65 78 74 29 7d   text, t2 text)}
02c0: 0a 65 78 65 63 73 71 6c 20 7b 49 4e 53 45 52 54  .execsql {INSERT
02d0: 20 49 4e 54 4f 20 74 65 73 74 31 20 56 41 4c 55   INTO test1 VALU
02e0: 45 53 28 31 2c 32 2c 31 2e 31 2c 32 2e 32 2c 27  ES(1,2,1.1,2.2,'
02f0: 68 65 6c 6c 6f 27 2c 27 77 6f 72 6c 64 27 29 7d  hello','world')}
0300: 0a 70 72 6f 63 20 74 65 73 74 5f 65 78 70 72 20  .proc test_expr 
0310: 7b 6e 61 6d 65 20 73 65 74 74 69 6e 67 73 20 65  {name settings e
0320: 78 70 72 20 72 65 73 75 6c 74 7d 20 7b 0a 20 20  xpr result} {.  
0330: 64 6f 5f 74 65 73 74 20 24 6e 61 6d 65 20 5b 66  do_test $name [f
0340: 6f 72 6d 61 74 20 7b 0a 20 20 20 20 65 78 65 63  ormat {.    exec
0350: 73 71 6c 20 7b 42 45 47 49 4e 3b 20 55 50 44 41  sql {BEGIN; UPDA
0360: 54 45 20 74 65 73 74 31 20 53 45 54 20 25 73 3b  TE test1 SET %s;
0370: 20 53 45 4c 45 43 54 20 25 73 20 46 52 4f 4d 20   SELECT %s FROM 
0380: 74 65 73 74 31 3b 20 52 4f 4c 4c 42 41 43 4b 3b  test1; ROLLBACK;
0390: 7d 0a 20 20 7d 20 24 73 65 74 74 69 6e 67 73 20  }.  } $settings 
03a0: 24 65 78 70 72 5d 20 24 72 65 73 75 6c 74 0a 7d  $expr] $result.}
03b0: 0a 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  ..test_expr expr
03c0: 2d 31 2e 31 20 7b 69 31 3d 31 30 2c 20 69 32 3d  -1.1 {i1=10, i2=
03d0: 32 30 7d 20 7b 69 31 2b 69 32 7d 20 33 30 0a 74  20} {i1+i2} 30.t
03e0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
03f0: 32 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d  2 {i1=10, i2=20}
0400: 20 7b 69 31 2d 69 32 7d 20 2d 31 30 0a 74 65 73   {i1-i2} -10.tes
0410: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 33 20  t_expr expr-1.3 
0420: 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b  {i1=10, i2=20} {
0430: 69 31 2a 69 32 7d 20 32 30 30 0a 74 65 73 74 5f  i1*i2} 200.test_
0440: 65 78 70 72 20 65 78 70 72 2d 31 2e 34 20 7b 69  expr expr-1.4 {i
0450: 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69 31  1=10, i2=20} {i1
0460: 2f 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  /i2} 0.test_expr
0470: 20 65 78 70 72 2d 31 2e 35 20 7b 69 31 3d 31 30   expr-1.5 {i1=10
0480: 2c 20 69 32 3d 32 30 7d 20 7b 69 32 2f 69 31 7d  , i2=20} {i2/i1}
0490: 20 32 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   2.test_expr exp
04a0: 72 2d 31 2e 36 20 7b 69 31 3d 31 30 2c 20 69 32  r-1.6 {i1=10, i2
04b0: 3d 32 30 7d 20 7b 69 32 3c 69 31 7d 20 30 0a 74  =20} {i2<i1} 0.t
04c0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
04d0: 37 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d  7 {i1=10, i2=20}
04e0: 20 7b 69 32 3c 3d 69 31 7d 20 30 0a 74 65 73 74   {i2<=i1} 0.test
04f0: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 38 20 7b  _expr expr-1.8 {
0500: 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69  i1=10, i2=20} {i
0510: 32 3e 69 31 7d 20 31 0a 74 65 73 74 5f 65 78 70  2>i1} 1.test_exp
0520: 72 20 65 78 70 72 2d 31 2e 39 20 7b 69 31 3d 31  r expr-1.9 {i1=1
0530: 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3e 3d 69  0, i2=20} {i2>=i
0540: 31 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65  1} 1.test_expr e
0550: 78 70 72 2d 31 2e 31 30 20 7b 69 31 3d 31 30 2c  xpr-1.10 {i1=10,
0560: 20 69 32 3d 32 30 7d 20 7b 69 32 21 3d 69 31 7d   i2=20} {i2!=i1}
0570: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
0580: 72 2d 31 2e 31 31 20 7b 69 31 3d 31 30 2c 20 69  r-1.11 {i1=10, i
0590: 32 3d 32 30 7d 20 7b 69 32 3d 69 31 7d 20 30 0a  2=20} {i2=i1} 0.
05a0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
05b0: 2e 31 32 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32  .12 {i1=10, i2=2
05c0: 30 7d 20 7b 69 32 3c 3e 69 31 7d 20 31 0a 74 65  0} {i2<>i1} 1.te
05d0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31  st_expr expr-1.1
05e0: 33 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d  3 {i1=10, i2=20}
05f0: 20 7b 69 32 3d 3d 69 31 7d 20 30 0a 74 65 73 74   {i2==i1} 0.test
0600: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 34 20  _expr expr-1.14 
0610: 7b 69 31 3d 32 30 2c 20 69 32 3d 32 30 7d 20 7b  {i1=20, i2=20} {
0620: 69 32 3c 69 31 7d 20 30 0a 74 65 73 74 5f 65 78  i2<i1} 0.test_ex
0630: 70 72 20 65 78 70 72 2d 31 2e 31 35 20 7b 69 31  pr expr-1.15 {i1
0640: 3d 32 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3c  =20, i2=20} {i2<
0650: 3d 69 31 7d 20 31 0a 74 65 73 74 5f 65 78 70 72  =i1} 1.test_expr
0660: 20 65 78 70 72 2d 31 2e 31 36 20 7b 69 31 3d 32   expr-1.16 {i1=2
0670: 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3e 69 31  0, i2=20} {i2>i1
0680: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
0690: 70 72 2d 31 2e 31 37 20 7b 69 31 3d 32 30 2c 20  pr-1.17 {i1=20, 
06a0: 69 32 3d 32 30 7d 20 7b 69 32 3e 3d 69 31 7d 20  i2=20} {i2>=i1} 
06b0: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
06c0: 2d 31 2e 31 38 20 7b 69 31 3d 32 30 2c 20 69 32  -1.18 {i1=20, i2
06d0: 3d 32 30 7d 20 7b 69 32 21 3d 69 31 7d 20 30 0a  =20} {i2!=i1} 0.
06e0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
06f0: 2e 31 39 20 7b 69 31 3d 32 30 2c 20 69 32 3d 32  .19 {i1=20, i2=2
0700: 30 7d 20 7b 69 32 3d 69 31 7d 20 31 0a 74 65 73  0} {i2=i1} 1.tes
0710: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 32 30  t_expr expr-1.20
0720: 20 7b 69 31 3d 32 30 2c 20 69 32 3d 32 30 7d 20   {i1=20, i2=20} 
0730: 7b 69 32 3c 3e 69 31 7d 20 30 0a 74 65 73 74 5f  {i2<>i1} 0.test_
0740: 65 78 70 72 20 65 78 70 72 2d 31 2e 32 31 20 7b  expr expr-1.21 {
0750: 69 31 3d 32 30 2c 20 69 32 3d 32 30 7d 20 7b 69  i1=20, i2=20} {i
0760: 32 3d 3d 69 31 7d 20 31 0a 74 65 73 74 5f 65 78  2==i1} 1.test_ex
0770: 70 72 20 65 78 70 72 2d 31 2e 32 32 20 7b 69 31  pr expr-1.22 {i1
0780: 3d 31 2c 20 69 32 3d 32 2c 20 72 31 3d 33 2e 30  =1, i2=2, r1=3.0
0790: 7d 20 7b 69 31 2b 69 32 2a 72 31 7d 20 7b 37 2e  } {i1+i2*r1} {7.
07a0: 30 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  0}.test_expr exp
07b0: 72 2d 31 2e 32 33 20 7b 69 31 3d 31 2c 20 69 32  r-1.23 {i1=1, i2
07c0: 3d 32 2c 20 72 31 3d 33 2e 30 7d 20 7b 28 69 31  =2, r1=3.0} {(i1
07d0: 2b 69 32 29 2a 72 31 7d 20 7b 39 2e 30 7d 0a 74  +i2)*r1} {9.0}.t
07e0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
07f0: 32 34 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20  24 {i1=1, i2=2} 
0800: 7b 6d 69 6e 28 69 31 2c 69 32 2c 69 31 2b 69 32  {min(i1,i2,i1+i2
0810: 2c 69 31 2d 69 32 29 7d 20 7b 2d 31 7d 0a 74 65  ,i1-i2)} {-1}.te
0820: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 32  st_expr expr-1.2
0830: 35 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20 7b  5 {i1=1, i2=2} {
0840: 6d 61 78 28 69 31 2c 69 32 2c 69 31 2b 69 32 2c  max(i1,i2,i1+i2,
0850: 69 31 2d 69 32 29 7d 20 7b 33 7d 0a 74 65 73 74  i1-i2)} {3}.test
0860: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 32 36 20  _expr expr-1.26 
0870: 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 6d 61  {i1=1, i2=2} {ma
0880: 78 28 69 31 2c 69 32 2c 69 31 2b 69 32 2c 69 31  x(i1,i2,i1+i2,i1
0890: 2d 69 32 29 7d 20 7b 33 7d 0a 74 65 73 74 5f 65  -i2)} {3}.test_e
08a0: 78 70 72 20 65 78 70 72 2d 31 2e 32 37 20 7b 69  xpr expr-1.27 {i
08b0: 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 69 31 3d 3d  1=1, i2=2} {i1==
08c0: 31 20 41 4e 44 20 69 32 3d 32 7d 20 7b 31 7d 0a  1 AND i2=2} {1}.
08d0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
08e0: 2e 32 38 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d  .28 {i1=1, i2=2}
08f0: 20 7b 69 31 3d 32 20 41 4e 44 20 69 32 3d 31 7d   {i1=2 AND i2=1}
0900: 20 7b 30 7d 0a 74 65 73 74 5f 65 78 70 72 20 65   {0}.test_expr e
0910: 78 70 72 2d 31 2e 32 39 20 7b 69 31 3d 31 2c 20  xpr-1.29 {i1=1, 
0920: 69 32 3d 32 7d 20 7b 69 31 3d 31 20 41 4e 44 20  i2=2} {i1=1 AND 
0930: 69 32 3d 31 7d 20 7b 30 7d 0a 74 65 73 74 5f 65  i2=1} {0}.test_e
0940: 78 70 72 20 65 78 70 72 2d 31 2e 33 30 20 7b 69  xpr expr-1.30 {i
0950: 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 69 31 3d 32  1=1, i2=2} {i1=2
0960: 20 41 4e 44 20 69 32 3d 32 7d 20 7b 30 7d 0a 74   AND i2=2} {0}.t
0970: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
0980: 33 31 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20  31 {i1=1, i2=2} 
0990: 7b 69 31 3d 3d 31 20 4f 52 20 69 32 3d 32 7d 20  {i1==1 OR i2=2} 
09a0: 7b 31 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78  {1}.test_expr ex
09b0: 70 72 2d 31 2e 33 32 20 7b 69 31 3d 31 2c 20 69  pr-1.32 {i1=1, i
09c0: 32 3d 32 7d 20 7b 69 31 3d 32 20 4f 52 20 69 32  2=2} {i1=2 OR i2
09d0: 3d 31 7d 20 7b 30 7d 0a 74 65 73 74 5f 65 78 70  =1} {0}.test_exp
09e0: 72 20 65 78 70 72 2d 31 2e 33 33 20 7b 69 31 3d  r expr-1.33 {i1=
09f0: 31 2c 20 69 32 3d 32 7d 20 7b 69 31 3d 31 20 4f  1, i2=2} {i1=1 O
0a00: 52 20 69 32 3d 31 7d 20 7b 31 7d 0a 74 65 73 74  R i2=1} {1}.test
0a10: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 33 34 20  _expr expr-1.34 
0a20: 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 69 31  {i1=1, i2=2} {i1
0a30: 3d 32 20 4f 52 20 69 32 3d 32 7d 20 7b 31 7d 0a  =2 OR i2=2} {1}.
0a40: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
0a50: 2e 33 35 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d  .35 {i1=1, i2=2}
0a60: 20 7b 69 31 2d 69 32 3d 2d 31 7d 20 7b 31 7d 0a   {i1-i2=-1} {1}.
0a70: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
0a80: 2e 33 36 20 7b 69 31 3d 31 2c 20 69 32 3d 30 7d  .36 {i1=1, i2=0}
0a90: 20 7b 6e 6f 74 20 69 31 7d 20 7b 30 7d 0a 74 65   {not i1} {0}.te
0aa0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 33  st_expr expr-1.3
0ab0: 37 20 7b 69 31 3d 31 2c 20 69 32 3d 30 7d 20 7b  7 {i1=1, i2=0} {
0ac0: 6e 6f 74 20 69 32 7d 20 7b 31 7d 0a 74 65 73 74  not i2} {1}.test
0ad0: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 33 38 20  _expr expr-1.38 
0ae0: 7b 69 31 3d 31 7d 20 7b 2d 69 31 7d 20 7b 2d 31  {i1=1} {-i1} {-1
0af0: 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  }.test_expr expr
0b00: 2d 31 2e 33 39 20 7b 69 31 3d 31 7d 20 7b 2b 69  -1.39 {i1=1} {+i
0b10: 31 7d 20 7b 31 7d 0a 74 65 73 74 5f 65 78 70 72  1} {1}.test_expr
0b20: 20 65 78 70 72 2d 31 2e 34 30 20 7b 69 31 3d 31   expr-1.40 {i1=1
0b30: 2c 20 69 32 3d 32 7d 20 7b 2b 28 69 32 2b 69 31  , i2=2} {+(i2+i1
0b40: 29 7d 20 7b 33 7d 0a 74 65 73 74 5f 65 78 70 72  )} {3}.test_expr
0b50: 20 65 78 70 72 2d 31 2e 34 31 20 7b 69 31 3d 31   expr-1.41 {i1=1
0b60: 2c 20 69 32 3d 32 7d 20 7b 2d 28 69 32 2b 69 31  , i2=2} {-(i2+i1
0b70: 29 7d 20 7b 2d 33 7d 0a 74 65 73 74 5f 65 78 70  )} {-3}.test_exp
0b80: 72 20 65 78 70 72 2d 31 2e 34 32 20 7b 69 31 3d  r expr-1.42 {i1=
0b90: 31 2c 20 69 32 3d 32 7d 20 7b 69 31 7c 69 32 7d  1, i2=2} {i1|i2}
0ba0: 20 7b 33 7d 0a 74 65 73 74 5f 65 78 70 72 20 65   {3}.test_expr e
0bb0: 78 70 72 2d 31 2e 34 32 62 20 7b 69 31 3d 31 2c  xpr-1.42b {i1=1,
0bc0: 20 69 32 3d 32 7d 20 7b 34 7c 32 7d 20 7b 36 7d   i2=2} {4|2} {6}
0bd0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
0be0: 31 2e 34 33 20 7b 69 31 3d 31 2c 20 69 32 3d 32  1.43 {i1=1, i2=2
0bf0: 7d 20 7b 69 31 26 69 32 7d 20 7b 30 7d 0a 74 65  } {i1&i2} {0}.te
0c00: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 34  st_expr expr-1.4
0c10: 33 62 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20  3b {i1=1, i2=2} 
0c20: 7b 34 26 35 7d 20 7b 34 7d 0a 74 65 73 74 5f 65  {4&5} {4}.test_e
0c30: 78 70 72 20 65 78 70 72 2d 31 2e 34 34 20 7b 69  xpr expr-1.44 {i
0c40: 31 3d 31 7d 20 7b 7e 69 31 7d 20 7b 2d 32 7d 0a  1=1} {~i1} {-2}.
0c50: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
0c60: 2e 34 35 20 7b 69 31 3d 31 2c 20 69 32 3d 33 7d  .45 {i1=1, i2=3}
0c70: 20 7b 69 31 3c 3c 69 32 7d 20 7b 38 7d 0a 74 65   {i1<<i2} {8}.te
0c80: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 34  st_expr expr-1.4
0c90: 36 20 7b 69 31 3d 33 32 2c 20 69 32 3d 33 7d 20  6 {i1=32, i2=3} 
0ca0: 7b 69 31 3e 3e 69 32 7d 20 7b 34 7d 0a 74 65 73  {i1>>i2} {4}.tes
0cb0: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 34 37  t_expr expr-1.47
0cc0: 20 7b 69 31 3d 39 39 39 39 39 39 39 39 39 39 2c   {i1=9999999999,
0cd0: 20 69 32 3d 38 38 38 38 38 38 38 38 38 38 7d 20   i2=8888888888} 
0ce0: 7b 69 31 3c 69 32 7d 20 30 0a 74 65 73 74 5f 65  {i1<i2} 0.test_e
0cf0: 78 70 72 20 65 78 70 72 2d 31 2e 34 38 20 7b 69  xpr expr-1.48 {i
0d00: 31 3d 39 39 39 39 39 39 39 39 39 39 2c 20 69 32  1=9999999999, i2
0d10: 3d 38 38 38 38 38 38 38 38 38 38 7d 20 7b 69 31  =8888888888} {i1
0d20: 3d 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =i2} 0.test_expr
0d30: 20 65 78 70 72 2d 31 2e 34 39 20 7b 69 31 3d 39   expr-1.49 {i1=9
0d40: 39 39 39 39 39 39 39 39 39 2c 20 69 32 3d 38 38  999999999, i2=88
0d50: 38 38 38 38 38 38 38 38 7d 20 7b 69 31 3e 69 32  88888888} {i1>i2
0d60: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
0d70: 70 72 2d 31 2e 35 30 20 7b 69 31 3d 39 39 39 39  pr-1.50 {i1=9999
0d80: 39 39 39 39 39 39 39 2c 20 69 32 3d 39 39 39 39  9999999, i2=9999
0d90: 39 39 39 39 39 39 38 7d 20 7b 69 31 3c 69 32 7d  9999998} {i1<i2}
0da0: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
0db0: 72 2d 31 2e 35 31 20 7b 69 31 3d 39 39 39 39 39  r-1.51 {i1=99999
0dc0: 39 39 39 39 39 39 2c 20 69 32 3d 39 39 39 39 39  999999, i2=99999
0dd0: 39 39 39 39 39 38 7d 20 7b 69 31 3d 69 32 7d 20  999998} {i1=i2} 
0de0: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
0df0: 2d 31 2e 35 32 20 7b 69 31 3d 39 39 39 39 39 39  -1.52 {i1=999999
0e00: 39 39 39 39 39 2c 20 69 32 3d 39 39 39 39 39 39  99999, i2=999999
0e10: 39 39 39 39 38 7d 20 7b 69 31 3e 69 32 7d 20 31  99998} {i1>i2} 1
0e20: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
0e30: 31 2e 35 33 20 7b 69 31 3d 30 39 39 39 39 39 39  1.53 {i1=0999999
0e40: 39 39 39 39 39 2c 20 69 32 3d 39 39 39 39 39 39  99999, i2=999999
0e50: 39 39 39 39 39 7d 20 7b 69 31 3c 69 32 7d 20 30  99999} {i1<i2} 0
0e60: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
0e70: 31 2e 35 34 20 7b 69 31 3d 30 39 39 39 39 39 39  1.54 {i1=0999999
0e80: 39 39 39 39 39 2c 20 69 32 3d 39 39 39 39 39 39  99999, i2=999999
0e90: 39 39 39 39 39 7d 20 7b 69 31 3d 69 32 7d 20 31  99999} {i1=i2} 1
0ea0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
0eb0: 31 2e 35 35 20 7b 69 31 3d 30 39 39 39 39 39 39  1.55 {i1=0999999
0ec0: 39 39 39 39 39 2c 20 69 32 3d 39 39 39 39 39 39  99999, i2=999999
0ed0: 39 39 39 39 39 7d 20 7b 69 31 3e 69 32 7d 20 30  99999} {i1>i2} 0
0ee0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
0ef0: 31 2e 35 36 20 7b 69 31 3d 32 35 2c 20 69 32 3d  1.56 {i1=25, i2=
0f00: 31 31 7d 20 7b 69 31 25 69 32 7d 20 33 0a 74 65  11} {i1%i2} 3.te
0f10: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 35  st_expr expr-1.5
0f20: 38 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 31  8 {i1=NULL, i2=1
0f30: 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 2b 69  } {coalesce(i1+i
0f40: 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65  2,99)} 99.test_e
0f50: 78 70 72 20 65 78 70 72 2d 31 2e 35 39 20 7b 69  xpr expr-1.59 {i
0f60: 31 3d 31 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63  1=1, i2=NULL} {c
0f70: 6f 61 6c 65 73 63 65 28 69 31 2b 69 32 2c 39 39  oalesce(i1+i2,99
0f80: 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20  )} 99.test_expr 
0f90: 65 78 70 72 2d 31 2e 36 30 20 7b 69 31 3d 4e 55  expr-1.60 {i1=NU
0fa0: 4c 4c 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f  LL, i2=NULL} {co
0fb0: 61 6c 65 73 63 65 28 69 31 2b 69 32 2c 39 39 29  alesce(i1+i2,99)
0fc0: 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65  } 99.test_expr e
0fd0: 78 70 72 2d 31 2e 36 31 20 7b 69 31 3d 4e 55 4c  xpr-1.61 {i1=NUL
0fe0: 4c 2c 20 69 32 3d 31 7d 20 7b 63 6f 61 6c 65 73  L, i2=1} {coales
0ff0: 63 65 28 69 31 2d 69 32 2c 39 39 29 7d 20 39 39  ce(i1-i2,99)} 99
1000: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1010: 31 2e 36 32 20 7b 69 31 3d 31 2c 20 69 32 3d 4e  1.62 {i1=1, i2=N
1020: 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69  ULL} {coalesce(i
1030: 31 2d 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73  1-i2,99)} 99.tes
1040: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 36 33  t_expr expr-1.63
1050: 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55   {i1=NULL, i2=NU
1060: 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31  LL} {coalesce(i1
1070: 2d 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74  -i2,99)} 99.test
1080: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 36 34 20  _expr expr-1.64 
1090: 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 31 7d 20  {i1=NULL, i2=1} 
10a0: 7b 63 6f 61 6c 65 73 63 65 28 69 31 2a 69 32 2c  {coalesce(i1*i2,
10b0: 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70  99)} 99.test_exp
10c0: 72 20 65 78 70 72 2d 31 2e 36 35 20 7b 69 31 3d  r expr-1.65 {i1=
10d0: 31 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61  1, i2=NULL} {coa
10e0: 6c 65 73 63 65 28 69 31 2a 69 32 2c 39 39 29 7d  lesce(i1*i2,99)}
10f0: 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78   99.test_expr ex
1100: 70 72 2d 31 2e 36 36 20 7b 69 31 3d 4e 55 4c 4c  pr-1.66 {i1=NULL
1110: 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c  , i2=NULL} {coal
1120: 65 73 63 65 28 69 31 2a 69 32 2c 39 39 29 7d 20  esce(i1*i2,99)} 
1130: 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  99.test_expr exp
1140: 72 2d 31 2e 36 37 20 7b 69 31 3d 4e 55 4c 4c 2c  r-1.67 {i1=NULL,
1150: 20 69 32 3d 31 7d 20 7b 63 6f 61 6c 65 73 63 65   i2=1} {coalesce
1160: 28 69 31 2f 69 32 2c 39 39 29 7d 20 39 39 0a 74  (i1/i2,99)} 99.t
1170: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
1180: 36 38 20 7b 69 31 3d 31 2c 20 69 32 3d 4e 55 4c  68 {i1=1, i2=NUL
1190: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 2f  L} {coalesce(i1/
11a0: 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  i2,99)} 99.test_
11b0: 65 78 70 72 20 65 78 70 72 2d 31 2e 36 39 20 7b  expr expr-1.69 {
11c0: 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c 4c  i1=NULL, i2=NULL
11d0: 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 2f 69  } {coalesce(i1/i
11e0: 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65  2,99)} 99.test_e
11f0: 78 70 72 20 65 78 70 72 2d 31 2e 37 30 20 7b 69  xpr expr-1.70 {i
1200: 31 3d 4e 55 4c 4c 2c 20 69 32 3d 31 7d 20 7b 63  1=NULL, i2=1} {c
1210: 6f 61 6c 65 73 63 65 28 69 31 3c 69 32 2c 39 39  oalesce(i1<i2,99
1220: 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20  )} 99.test_expr 
1230: 65 78 70 72 2d 31 2e 37 31 20 7b 69 31 3d 31 2c  expr-1.71 {i1=1,
1240: 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65   i2=NULL} {coale
1250: 73 63 65 28 69 31 3e 69 32 2c 39 39 29 7d 20 39  sce(i1>i2,99)} 9
1260: 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  9.test_expr expr
1270: 2d 31 2e 37 32 20 7b 69 31 3d 4e 55 4c 4c 2c 20  -1.72 {i1=NULL, 
1280: 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73  i2=NULL} {coales
1290: 63 65 28 69 31 3c 3d 69 32 2c 39 39 29 7d 20 39  ce(i1<=i2,99)} 9
12a0: 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  9.test_expr expr
12b0: 2d 31 2e 37 33 20 7b 69 31 3d 4e 55 4c 4c 2c 20  -1.73 {i1=NULL, 
12c0: 69 32 3d 31 7d 20 7b 63 6f 61 6c 65 73 63 65 28  i2=1} {coalesce(
12d0: 69 31 3e 3d 69 32 2c 39 39 29 7d 20 39 39 0a 74  i1>=i2,99)} 99.t
12e0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
12f0: 37 34 20 7b 69 31 3d 31 2c 20 69 32 3d 4e 55 4c  74 {i1=1, i2=NUL
1300: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 21  L} {coalesce(i1!
1310: 3d 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74  =i2,99)} 99.test
1320: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 37 35 20  _expr expr-1.75 
1330: 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c  {i1=NULL, i2=NUL
1340: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 3d  L} {coalesce(i1=
1350: 3d 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74  =i2,99)} 99.test
1360: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 37 36 20  _expr expr-1.76 
1370: 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c  {i1=NULL, i2=NUL
1380: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 6e 6f 74  L} {coalesce(not
1390: 20 69 31 2c 39 39 29 7d 20 39 39 0a 74 65 73 74   i1,99)} 99.test
13a0: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 37 37 20  _expr expr-1.77 
13b0: 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c  {i1=NULL, i2=NUL
13c0: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 2d 69 31  L} {coalesce(-i1
13d0: 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65 78  ,99)} 99.test_ex
13e0: 70 72 20 65 78 70 72 2d 31 2e 37 38 20 7b 69 31  pr expr-1.78 {i1
13f0: 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c 4c 7d 20  =NULL, i2=NULL} 
1400: 7b 63 6f 61 6c 65 73 63 65 28 69 31 20 49 53 20  {coalesce(i1 IS 
1410: 4e 55 4c 4c 20 41 4e 44 20 69 32 3d 35 2c 39 39  NULL AND i2=5,99
1420: 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20  )} 99.test_expr 
1430: 65 78 70 72 2d 31 2e 37 39 20 7b 69 31 3d 4e 55  expr-1.79 {i1=NU
1440: 4c 4c 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f  LL, i2=NULL} {co
1450: 61 6c 65 73 63 65 28 69 31 20 49 53 20 4e 55 4c  alesce(i1 IS NUL
1460: 4c 20 4f 52 20 69 32 3d 35 2c 39 39 29 7d 20 31  L OR i2=5,99)} 1
1470: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1480: 31 2e 38 30 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.80 {i1=NULL, i
1490: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
14a0: 65 28 69 31 3d 35 20 41 4e 44 20 69 32 20 49 53  e(i1=5 AND i2 IS
14b0: 20 4e 55 4c 4c 2c 39 39 29 7d 20 39 39 0a 74 65   NULL,99)} 99.te
14c0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 38  st_expr expr-1.8
14d0: 31 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e  1 {i1=NULL, i2=N
14e0: 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69  ULL} {coalesce(i
14f0: 31 3d 35 20 4f 52 20 69 32 20 49 53 20 4e 55 4c  1=5 OR i2 IS NUL
1500: 4c 2c 39 39 29 7d 20 31 0a 74 65 73 74 5f 65 78  L,99)} 1.test_ex
1510: 70 72 20 65 78 70 72 2d 31 2e 38 32 20 7b 69 31  pr expr-1.82 {i1
1520: 3d 4e 55 4c 4c 2c 20 69 32 3d 33 7d 20 7b 63 6f  =NULL, i2=3} {co
1530: 61 6c 65 73 63 65 28 6d 69 6e 28 69 31 2c 69 32  alesce(min(i1,i2
1540: 2c 31 29 2c 39 39 29 7d 20 39 39 0a 74 65 73 74  ,1),99)} 99.test
1550: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 38 33 20  _expr expr-1.83 
1560: 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 33 7d 20  {i1=NULL, i2=3} 
1570: 7b 63 6f 61 6c 65 73 63 65 28 6d 61 78 28 69 31  {coalesce(max(i1
1580: 2c 69 32 2c 31 29 2c 39 39 29 7d 20 39 39 0a 74  ,i2,1),99)} 99.t
1590: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
15a0: 38 34 20 7b 69 31 3d 33 2c 20 69 32 3d 4e 55 4c  84 {i1=3, i2=NUL
15b0: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 6d 69 6e  L} {coalesce(min
15c0: 28 69 31 2c 69 32 2c 31 29 2c 39 39 29 7d 20 39  (i1,i2,1),99)} 9
15d0: 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  9.test_expr expr
15e0: 2d 31 2e 38 35 20 7b 69 31 3d 33 2c 20 69 32 3d  -1.85 {i1=3, i2=
15f0: 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28  NULL} {coalesce(
1600: 6d 61 78 28 69 31 2c 69 32 2c 31 29 2c 39 39 29  max(i1,i2,1),99)
1610: 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65  } 99.test_expr e
1620: 78 70 72 2d 31 2e 38 36 20 7b 69 31 3d 33 2c 20  xpr-1.86 {i1=3, 
1630: 69 32 3d 38 7d 20 7b 35 20 62 65 74 77 65 65 6e  i2=8} {5 between
1640: 20 69 31 20 61 6e 64 20 69 32 7d 20 31 0a 74 65   i1 and i2} 1.te
1650: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 38  st_expr expr-1.8
1660: 37 20 7b 69 31 3d 33 2c 20 69 32 3d 38 7d 20 7b  7 {i1=3, i2=8} {
1670: 35 20 6e 6f 74 20 62 65 74 77 65 65 6e 20 69 31  5 not between i1
1680: 20 61 6e 64 20 69 32 7d 20 30 0a 74 65 73 74 5f   and i2} 0.test_
1690: 65 78 70 72 20 65 78 70 72 2d 31 2e 38 38 20 7b  expr expr-1.88 {
16a0: 69 31 3d 33 2c 20 69 32 3d 38 7d 20 7b 35 35 20  i1=3, i2=8} {55 
16b0: 62 65 74 77 65 65 6e 20 69 31 20 61 6e 64 20 69  between i1 and i
16c0: 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65  2} 0.test_expr e
16d0: 78 70 72 2d 31 2e 38 39 20 7b 69 31 3d 33 2c 20  xpr-1.89 {i1=3, 
16e0: 69 32 3d 38 7d 20 7b 35 35 20 6e 6f 74 20 62 65  i2=8} {55 not be
16f0: 74 77 65 65 6e 20 69 31 20 61 6e 64 20 69 32 7d  tween i1 and i2}
1700: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
1710: 72 2d 31 2e 39 30 20 7b 69 31 3d 33 2c 20 69 32  r-1.90 {i1=3, i2
1720: 3d 4e 55 4c 4c 7d 20 7b 35 20 62 65 74 77 65 65  =NULL} {5 betwee
1730: 6e 20 69 31 20 61 6e 64 20 69 32 7d 20 7b 7b 7d  n i1 and i2} {{}
1740: 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  }.test_expr expr
1750: 2d 31 2e 39 31 20 7b 69 31 3d 33 2c 20 69 32 3d  -1.91 {i1=3, i2=
1760: 4e 55 4c 4c 7d 20 7b 35 20 6e 6f 74 20 62 65 74  NULL} {5 not bet
1770: 77 65 65 6e 20 69 31 20 61 6e 64 20 69 32 7d 20  ween i1 and i2} 
1780: 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65  {{}}.test_expr e
1790: 78 70 72 2d 31 2e 39 32 20 7b 69 31 3d 33 2c 20  xpr-1.92 {i1=3, 
17a0: 69 32 3d 4e 55 4c 4c 7d 20 7b 32 20 62 65 74 77  i2=NULL} {2 betw
17b0: 65 65 6e 20 69 31 20 61 6e 64 20 69 32 7d 20 30  een i1 and i2} 0
17c0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
17d0: 31 2e 39 33 20 7b 69 31 3d 33 2c 20 69 32 3d 4e  1.93 {i1=3, i2=N
17e0: 55 4c 4c 7d 20 7b 32 20 6e 6f 74 20 62 65 74 77  ULL} {2 not betw
17f0: 65 65 6e 20 69 31 20 61 6e 64 20 69 32 7d 20 31  een i1 and i2} 1
1800: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1810: 31 2e 39 34 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.94 {i1=NULL, i
1820: 32 3d 38 7d 20 7b 32 20 62 65 74 77 65 65 6e 20  2=8} {2 between 
1830: 69 31 20 61 6e 64 20 69 32 7d 20 7b 7b 7d 7d 0a  i1 and i2} {{}}.
1840: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
1850: 2e 39 35 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32  .95 {i1=NULL, i2
1860: 3d 38 7d 20 7b 32 20 6e 6f 74 20 62 65 74 77 65  =8} {2 not betwe
1870: 65 6e 20 69 31 20 61 6e 64 20 69 32 7d 20 7b 7b  en i1 and i2} {{
1880: 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  }}.test_expr exp
1890: 72 2d 31 2e 39 34 20 7b 69 31 3d 4e 55 4c 4c 2c  r-1.94 {i1=NULL,
18a0: 20 69 32 3d 38 7d 20 7b 35 35 20 62 65 74 77 65   i2=8} {55 betwe
18b0: 65 6e 20 69 31 20 61 6e 64 20 69 32 7d 20 30 0a  en i1 and i2} 0.
18c0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
18d0: 2e 39 35 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32  .95 {i1=NULL, i2
18e0: 3d 38 7d 20 7b 35 35 20 6e 6f 74 20 62 65 74 77  =8} {55 not betw
18f0: 65 65 6e 20 69 31 20 61 6e 64 20 69 32 7d 20 31  een i1 and i2} 1
1900: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1910: 31 2e 39 36 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.96 {i1=NULL, i
1920: 32 3d 33 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69  2=3} {coalesce(i
1930: 31 3c 3c 69 32 2c 39 39 29 7d 20 39 39 0a 74 65  1<<i2,99)} 99.te
1940: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 39  st_expr expr-1.9
1950: 37 20 7b 69 31 3d 33 32 2c 20 69 32 3d 4e 55 4c  7 {i1=32, i2=NUL
1960: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 3e  L} {coalesce(i1>
1970: 3e 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74  >i2,99)} 99.test
1980: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 39 38 20  _expr expr-1.98 
1990: 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c  {i1=NULL, i2=NUL
19a0: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 7c  L} {coalesce(i1|
19b0: 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  i2,99)} 99.test_
19c0: 65 78 70 72 20 65 78 70 72 2d 31 2e 39 39 20 7b  expr expr-1.99 {
19d0: 69 31 3d 33 32 2c 20 69 32 3d 4e 55 4c 4c 7d 20  i1=32, i2=NULL} 
19e0: 7b 63 6f 61 6c 65 73 63 65 28 69 31 26 69 32 2c  {coalesce(i1&i2,
19f0: 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70  99)} 99.test_exp
1a00: 72 20 65 78 70 72 2d 31 2e 31 30 30 20 7b 69 31  r expr-1.100 {i1
1a10: 3d 31 2c 20 69 32 3d 27 27 7d 20 7b 69 31 3d 69  =1, i2=''} {i1=i
1a20: 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65  2} 0.test_expr e
1a30: 78 70 72 2d 31 2e 31 30 31 20 7b 69 31 3d 30 2c  xpr-1.101 {i1=0,
1a40: 20 69 32 3d 27 27 7d 20 7b 69 31 3d 69 32 7d 20   i2=''} {i1=i2} 
1a50: 30 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 70  0..# Check for p
1a60: 72 6f 70 65 72 20 68 61 6e 64 6c 69 6e 67 20 6f  roper handling o
1a70: 66 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72  f 64-bit integer
1a80: 20 76 61 6c 75 65 73 2e 0a 23 0a 74 65 73 74 5f   values..#.test_
1a90: 65 78 70 72 20 65 78 70 72 2d 31 2e 31 30 32 20  expr expr-1.102 
1aa0: 7b 69 31 3d 34 30 2c 20 69 32 3d 31 7d 20 7b 69  {i1=40, i2=1} {i
1ab0: 32 3c 3c 69 31 7d 20 31 30 39 39 35 31 31 36 32  2<<i1} 109951162
1ac0: 37 37 37 36 0a 0a 74 65 73 74 5f 65 78 70 72 20  7776..test_expr 
1ad0: 65 78 70 72 2d 31 2e 31 30 33 20 7b 69 31 3d 30  expr-1.103 {i1=0
1ae0: 7d 20 7b 28 2d 32 31 34 37 34 38 33 36 34 38 2e  } {(-2147483648.
1af0: 30 20 25 20 2d 31 29 7d 20 30 2e 30 0a 74 65 73  0 % -1)} 0.0.tes
1b00: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 30  t_expr expr-1.10
1b10: 34 20 7b 69 31 3d 30 7d 20 7b 28 2d 39 32 32 33  4 {i1=0} {(-9223
1b20: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38 2e  372036854775808.
1b30: 30 20 25 20 2d 31 29 7d 20 30 2e 30 0a 74 65 73  0 % -1)} 0.0.tes
1b40: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 30  t_expr expr-1.10
1b50: 35 20 7b 69 31 3d 30 7d 20 7b 28 2d 39 32 32 33  5 {i1=0} {(-9223
1b60: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38 2e  372036854775808.
1b70: 30 20 2f 20 2d 31 29 3e 31 7d 20 31 0a 0a 74 65  0 / -1)>1} 1..te
1b80: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 31  st_expr expr-2.1
1b90: 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e   {r1=1.23, r2=2.
1ba0: 33 34 7d 20 7b 72 31 2b 72 32 7d 20 33 2e 35 37  34} {r1+r2} 3.57
1bb0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1bc0: 32 2e 32 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32  2.2 {r1=1.23, r2
1bd0: 3d 32 2e 33 34 7d 20 7b 72 31 2d 72 32 7d 20 2d  =2.34} {r1-r2} -
1be0: 31 2e 31 31 0a 74 65 73 74 5f 65 78 70 72 20 65  1.11.test_expr e
1bf0: 78 70 72 2d 32 2e 33 20 7b 72 31 3d 31 2e 32 33  xpr-2.3 {r1=1.23
1c00: 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72 31 2a 72  , r2=2.34} {r1*r
1c10: 32 7d 20 32 2e 38 37 38 32 0a 73 65 74 20 74 63  2} 2.8782.set tc
1c20: 6c 5f 70 72 65 63 69 73 69 6f 6e 20 31 35 0a 74  l_precision 15.t
1c30: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
1c40: 34 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32  4 {r1=1.23, r2=2
1c50: 2e 33 34 7d 20 7b 72 31 2f 72 32 7d 20 30 2e 35  .34} {r1/r2} 0.5
1c60: 32 35 36 34 31 30 32 35 36 34 31 30 32 36 0a 74  25641025641026.t
1c70: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
1c80: 35 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32  5 {r1=1.23, r2=2
1c90: 2e 33 34 7d 20 7b 72 32 2f 72 31 7d 20 31 2e 39  .34} {r2/r1} 1.9
1ca0: 30 32 34 33 39 30 32 34 33 39 30 32 34 0a 74 65  0243902439024.te
1cb0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 36  st_expr expr-2.6
1cc0: 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e   {r1=1.23, r2=2.
1cd0: 33 34 7d 20 7b 72 32 3c 72 31 7d 20 30 0a 74 65  34} {r2<r1} 0.te
1ce0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 37  st_expr expr-2.7
1cf0: 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e   {r1=1.23, r2=2.
1d00: 33 34 7d 20 7b 72 32 3c 3d 72 31 7d 20 30 0a 74  34} {r2<=r1} 0.t
1d10: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
1d20: 38 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32  8 {r1=1.23, r2=2
1d30: 2e 33 34 7d 20 7b 72 32 3e 72 31 7d 20 31 0a 74  .34} {r2>r1} 1.t
1d40: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
1d50: 39 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32  9 {r1=1.23, r2=2
1d60: 2e 33 34 7d 20 7b 72 32 3e 3d 72 31 7d 20 31 0a  .34} {r2>=r1} 1.
1d70: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32  test_expr expr-2
1d80: 2e 31 30 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32  .10 {r1=1.23, r2
1d90: 3d 32 2e 33 34 7d 20 7b 72 32 21 3d 72 31 7d 20  =2.34} {r2!=r1} 
1da0: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
1db0: 2d 32 2e 31 31 20 7b 72 31 3d 31 2e 32 33 2c 20  -2.11 {r1=1.23, 
1dc0: 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3d 72 31 7d  r2=2.34} {r2=r1}
1dd0: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
1de0: 72 2d 32 2e 31 32 20 7b 72 31 3d 31 2e 32 33 2c  r-2.12 {r1=1.23,
1df0: 20 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3c 3e 72   r2=2.34} {r2<>r
1e00: 31 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65  1} 1.test_expr e
1e10: 78 70 72 2d 32 2e 31 33 20 7b 72 31 3d 31 2e 32  xpr-2.13 {r1=1.2
1e20: 33 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3d  3, r2=2.34} {r2=
1e30: 3d 72 31 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =r1} 0.test_expr
1e40: 20 65 78 70 72 2d 32 2e 31 34 20 7b 72 31 3d 32   expr-2.14 {r1=2
1e50: 2e 33 34 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72  .34, r2=2.34} {r
1e60: 32 3c 72 31 7d 20 30 0a 74 65 73 74 5f 65 78 70  2<r1} 0.test_exp
1e70: 72 20 65 78 70 72 2d 32 2e 31 35 20 7b 72 31 3d  r expr-2.15 {r1=
1e80: 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34 7d 20 7b  2.34, r2=2.34} {
1e90: 72 32 3c 3d 72 31 7d 20 31 0a 74 65 73 74 5f 65  r2<=r1} 1.test_e
1ea0: 78 70 72 20 65 78 70 72 2d 32 2e 31 36 20 7b 72  xpr expr-2.16 {r
1eb0: 31 3d 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34 7d  1=2.34, r2=2.34}
1ec0: 20 7b 72 32 3e 72 31 7d 20 30 0a 74 65 73 74 5f   {r2>r1} 0.test_
1ed0: 65 78 70 72 20 65 78 70 72 2d 32 2e 31 37 20 7b  expr expr-2.17 {
1ee0: 72 31 3d 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34  r1=2.34, r2=2.34
1ef0: 7d 20 7b 72 32 3e 3d 72 31 7d 20 31 0a 74 65 73  } {r2>=r1} 1.tes
1f00: 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 31 38  t_expr expr-2.18
1f10: 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32 3d 32 2e   {r1=2.34, r2=2.
1f20: 33 34 7d 20 7b 72 32 21 3d 72 31 7d 20 30 0a 74  34} {r2!=r1} 0.t
1f30: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
1f40: 31 39 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32 3d  19 {r1=2.34, r2=
1f50: 32 2e 33 34 7d 20 7b 72 32 3d 72 31 7d 20 31 0a  2.34} {r2=r1} 1.
1f60: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32  test_expr expr-2
1f70: 2e 32 30 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32  .20 {r1=2.34, r2
1f80: 3d 32 2e 33 34 7d 20 7b 72 32 3c 3e 72 31 7d 20  =2.34} {r2<>r1} 
1f90: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
1fa0: 2d 32 2e 32 31 20 7b 72 31 3d 32 2e 33 34 2c 20  -2.21 {r1=2.34, 
1fb0: 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3d 3d 72 31  r2=2.34} {r2==r1
1fc0: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
1fd0: 70 72 2d 32 2e 32 32 20 7b 72 31 3d 31 2e 32 33  pr-2.22 {r1=1.23
1fe0: 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 6d 69 6e 28  , r2=2.34} {min(
1ff0: 72 31 2c 72 32 2c 72 31 2b 72 32 2c 72 31 2d 72  r1,r2,r1+r2,r1-r
2000: 32 29 7d 20 7b 2d 31 2e 31 31 7d 0a 74 65 73 74  2)} {-1.11}.test
2010: 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 32 33 20  _expr expr-2.23 
2020: 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e 33  {r1=1.23, r2=2.3
2030: 34 7d 20 7b 6d 61 78 28 72 31 2c 72 32 2c 72 31  4} {max(r1,r2,r1
2040: 2b 72 32 2c 72 31 2d 72 32 29 7d 20 7b 33 2e 35  +r2,r1-r2)} {3.5
2050: 37 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  7}.test_expr exp
2060: 72 2d 32 2e 32 34 20 7b 72 31 3d 32 35 2e 30 2c  r-2.24 {r1=25.0,
2070: 20 72 32 3d 31 31 2e 30 7d 20 7b 72 31 25 72 32   r2=11.0} {r1%r2
2080: 7d 20 33 2e 30 0a 74 65 73 74 5f 65 78 70 72 20  } 3.0.test_expr 
2090: 65 78 70 72 2d 32 2e 32 35 20 7b 72 31 3d 31 2e  expr-2.25 {r1=1.
20a0: 32 33 2c 20 72 32 3d 4e 55 4c 4c 7d 20 7b 63 6f  23, r2=NULL} {co
20b0: 61 6c 65 73 63 65 28 72 31 2b 72 32 2c 39 39 2e  alesce(r1+r2,99.
20c0: 30 29 7d 20 39 39 2e 30 0a 74 65 73 74 5f 65 78  0)} 99.0.test_ex
20d0: 70 72 20 65 78 70 72 2d 32 2e 32 36 20 7b 72 31  pr expr-2.26 {r1
20e0: 3d 31 65 33 30 30 2c 20 72 32 3d 31 65 33 30 30  =1e300, r2=1e300
20f0: 7d 20 7b 63 6f 61 6c 65 73 63 65 28 28 72 31 2a  } {coalesce((r1*
2100: 72 32 29 2a 30 2e 30 2c 39 39 2e 30 29 7d 20 39  r2)*0.0,99.0)} 9
2110: 39 2e 30 0a 0a 74 65 73 74 5f 65 78 70 72 20 65  9.0..test_expr e
2120: 78 70 72 2d 33 2e 31 20 7b 74 31 3d 27 61 62 63  xpr-3.1 {t1='abc
2130: 27 2c 20 74 32 3d 27 78 79 7a 27 7d 20 7b 74 31  ', t2='xyz'} {t1
2140: 3c 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72  <t2} 1.test_expr
2150: 20 65 78 70 72 2d 33 2e 32 20 7b 74 31 3d 27 78   expr-3.2 {t1='x
2160: 79 7a 27 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b  yz', t2='abc'} {
2170: 74 31 3c 74 32 7d 20 30 0a 74 65 73 74 5f 65 78  t1<t2} 0.test_ex
2180: 70 72 20 65 78 70 72 2d 33 2e 33 20 7b 74 31 3d  pr expr-3.3 {t1=
2190: 27 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27 7d  'abc', t2='abc'}
21a0: 20 7b 74 31 3c 74 32 7d 20 30 0a 74 65 73 74 5f   {t1<t2} 0.test_
21b0: 65 78 70 72 20 65 78 70 72 2d 33 2e 34 20 7b 74  expr expr-3.4 {t
21c0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 78 79 7a  1='abc', t2='xyz
21d0: 27 7d 20 7b 74 31 3c 3d 74 32 7d 20 31 0a 74 65  '} {t1<=t2} 1.te
21e0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e 35  st_expr expr-3.5
21f0: 20 7b 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d 27   {t1='xyz', t2='
2200: 61 62 63 27 7d 20 7b 74 31 3c 3d 74 32 7d 20 30  abc'} {t1<=t2} 0
2210: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
2220: 33 2e 36 20 7b 74 31 3d 27 61 62 63 27 2c 20 74  3.6 {t1='abc', t
2230: 32 3d 27 61 62 63 27 7d 20 7b 74 31 3c 3d 74 32  2='abc'} {t1<=t2
2240: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
2250: 70 72 2d 33 2e 37 20 7b 74 31 3d 27 61 62 63 27  pr-3.7 {t1='abc'
2260: 2c 20 74 32 3d 27 78 79 7a 27 7d 20 7b 74 31 3e  , t2='xyz'} {t1>
2270: 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  t2} 0.test_expr 
2280: 65 78 70 72 2d 33 2e 38 20 7b 74 31 3d 27 78 79  expr-3.8 {t1='xy
2290: 7a 27 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b 74  z', t2='abc'} {t
22a0: 31 3e 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  1>t2} 1.test_exp
22b0: 72 20 65 78 70 72 2d 33 2e 39 20 7b 74 31 3d 27  r expr-3.9 {t1='
22c0: 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27 7d 20  abc', t2='abc'} 
22d0: 7b 74 31 3e 74 32 7d 20 30 0a 74 65 73 74 5f 65  {t1>t2} 0.test_e
22e0: 78 70 72 20 65 78 70 72 2d 33 2e 31 30 20 7b 74  xpr expr-3.10 {t
22f0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 78 79 7a  1='abc', t2='xyz
2300: 27 7d 20 7b 74 31 3e 3d 74 32 7d 20 30 0a 74 65  '} {t1>=t2} 0.te
2310: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e 31  st_expr expr-3.1
2320: 31 20 7b 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d  1 {t1='xyz', t2=
2330: 27 61 62 63 27 7d 20 7b 74 31 3e 3d 74 32 7d 20  'abc'} {t1>=t2} 
2340: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
2350: 2d 33 2e 31 32 20 7b 74 31 3d 27 61 62 63 27 2c  -3.12 {t1='abc',
2360: 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 3e 3d   t2='abc'} {t1>=
2370: 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  t2} 1.test_expr 
2380: 65 78 70 72 2d 33 2e 31 33 20 7b 74 31 3d 27 61  expr-3.13 {t1='a
2390: 62 63 27 2c 20 74 32 3d 27 78 79 7a 27 7d 20 7b  bc', t2='xyz'} {
23a0: 74 31 3d 74 32 7d 20 30 0a 74 65 73 74 5f 65 78  t1=t2} 0.test_ex
23b0: 70 72 20 65 78 70 72 2d 33 2e 31 34 20 7b 74 31  pr expr-3.14 {t1
23c0: 3d 27 78 79 7a 27 2c 20 74 32 3d 27 61 62 63 27  ='xyz', t2='abc'
23d0: 7d 20 7b 74 31 3d 74 32 7d 20 30 0a 74 65 73 74  } {t1=t2} 0.test
23e0: 5f 65 78 70 72 20 65 78 70 72 2d 33 2e 31 35 20  _expr expr-3.15 
23f0: 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61  {t1='abc', t2='a
2400: 62 63 27 7d 20 7b 74 31 3d 74 32 7d 20 31 0a 74  bc'} {t1=t2} 1.t
2410: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e  est_expr expr-3.
2420: 31 36 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  16 {t1='abc', t2
2430: 3d 27 78 79 7a 27 7d 20 7b 74 31 3d 3d 74 32 7d  ='xyz'} {t1==t2}
2440: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
2450: 72 2d 33 2e 31 37 20 7b 74 31 3d 27 78 79 7a 27  r-3.17 {t1='xyz'
2460: 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 3d  , t2='abc'} {t1=
2470: 3d 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =t2} 0.test_expr
2480: 20 65 78 70 72 2d 33 2e 31 38 20 7b 74 31 3d 27   expr-3.18 {t1='
2490: 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27 7d 20  abc', t2='abc'} 
24a0: 7b 74 31 3d 3d 74 32 7d 20 31 0a 74 65 73 74 5f  {t1==t2} 1.test_
24b0: 65 78 70 72 20 65 78 70 72 2d 33 2e 31 39 20 7b  expr expr-3.19 {
24c0: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 78 79  t1='abc', t2='xy
24d0: 7a 27 7d 20 7b 74 31 3c 3e 74 32 7d 20 31 0a 74  z'} {t1<>t2} 1.t
24e0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e  est_expr expr-3.
24f0: 32 30 20 7b 74 31 3d 27 78 79 7a 27 2c 20 74 32  20 {t1='xyz', t2
2500: 3d 27 61 62 63 27 7d 20 7b 74 31 3c 3e 74 32 7d  ='abc'} {t1<>t2}
2510: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
2520: 72 2d 33 2e 32 31 20 7b 74 31 3d 27 61 62 63 27  r-3.21 {t1='abc'
2530: 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 3c  , t2='abc'} {t1<
2540: 3e 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  >t2} 0.test_expr
2550: 20 65 78 70 72 2d 33 2e 32 32 20 7b 74 31 3d 27   expr-3.22 {t1='
2560: 61 62 63 27 2c 20 74 32 3d 27 78 79 7a 27 7d 20  abc', t2='xyz'} 
2570: 7b 74 31 21 3d 74 32 7d 20 31 0a 74 65 73 74 5f  {t1!=t2} 1.test_
2580: 65 78 70 72 20 65 78 70 72 2d 33 2e 32 33 20 7b  expr expr-3.23 {
2590: 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d 27 61 62  t1='xyz', t2='ab
25a0: 63 27 7d 20 7b 74 31 21 3d 74 32 7d 20 31 0a 74  c'} {t1!=t2} 1.t
25b0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e  est_expr expr-3.
25c0: 32 34 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  24 {t1='abc', t2
25d0: 3d 27 61 62 63 27 7d 20 7b 74 31 21 3d 74 32 7d  ='abc'} {t1!=t2}
25e0: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
25f0: 72 2d 33 2e 32 35 20 7b 74 31 3d 4e 55 4c 4c 2c  r-3.25 {t1=NULL,
2600: 20 74 32 3d 27 68 69 27 7d 20 7b 74 31 20 69 73   t2='hi'} {t1 is
2610: 6e 75 6c 6c 7d 20 31 0a 74 65 73 74 5f 65 78 70  null} 1.test_exp
2620: 72 20 65 78 70 72 2d 33 2e 32 35 62 20 7b 74 31  r expr-3.25b {t1
2630: 3d 4e 55 4c 4c 2c 20 74 32 3d 27 68 69 27 7d 20  =NULL, t2='hi'} 
2640: 7b 74 31 20 69 73 20 6e 75 6c 6c 7d 20 31 0a 74  {t1 is null} 1.t
2650: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e  est_expr expr-3.
2660: 32 36 20 7b 74 31 3d 4e 55 4c 4c 2c 20 74 32 3d  26 {t1=NULL, t2=
2670: 27 68 69 27 7d 20 7b 74 32 20 69 73 6e 75 6c 6c  'hi'} {t2 isnull
2680: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
2690: 70 72 2d 33 2e 32 37 20 7b 74 31 3d 4e 55 4c 4c  pr-3.27 {t1=NULL
26a0: 2c 20 74 32 3d 27 68 69 27 7d 20 7b 74 31 20 6e  , t2='hi'} {t1 n
26b0: 6f 74 6e 75 6c 6c 7d 20 30 0a 74 65 73 74 5f 65  otnull} 0.test_e
26c0: 78 70 72 20 65 78 70 72 2d 33 2e 32 38 20 7b 74  xpr expr-3.28 {t
26d0: 31 3d 4e 55 4c 4c 2c 20 74 32 3d 27 68 69 27 7d  1=NULL, t2='hi'}
26e0: 20 7b 74 32 20 6e 6f 74 6e 75 6c 6c 7d 20 31 0a   {t2 notnull} 1.
26f0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33  test_expr expr-3
2700: 2e 32 38 62 20 7b 74 31 3d 4e 55 4c 4c 2c 20 74  .28b {t1=NULL, t
2710: 32 3d 27 68 69 27 7d 20 7b 74 32 20 69 73 20 6e  2='hi'} {t2 is n
2720: 6f 74 20 6e 75 6c 6c 7d 20 31 0a 74 65 73 74 5f  ot null} 1.test_
2730: 65 78 70 72 20 65 78 70 72 2d 33 2e 32 39 20 7b  expr expr-3.29 {
2740: 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d 27 61 62  t1='xyz', t2='ab
2750: 63 27 7d 20 7b 74 31 7c 7c 74 32 7d 20 7b 78 79  c'} {t1||t2} {xy
2760: 7a 61 62 63 7d 0a 74 65 73 74 5f 65 78 70 72 20  zabc}.test_expr 
2770: 65 78 70 72 2d 33 2e 33 30 20 7b 74 31 3d 4e 55  expr-3.30 {t1=NU
2780: 4c 4c 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b 74  LL, t2='abc'} {t
2790: 31 7c 7c 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74  1||t2} {{}}.test
27a0: 5f 65 78 70 72 20 65 78 70 72 2d 33 2e 33 31 20  _expr expr-3.31 
27b0: 7b 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d 4e 55  {t1='xyz', t2=NU
27c0: 4c 4c 7d 20 7b 74 31 7c 7c 74 32 7d 20 7b 7b 7d  LL} {t1||t2} {{}
27d0: 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  }.test_expr expr
27e0: 2d 33 2e 33 32 20 7b 74 31 3d 27 78 79 7a 27 2c  -3.32 {t1='xyz',
27f0: 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 7c 7c   t2='abc'} {t1||
2800: 27 20 68 69 20 27 7c 7c 74 32 7d 20 7b 7b 78 79  ' hi '||t2} {{xy
2810: 7a 20 68 69 20 61 62 63 7d 7d 0a 74 65 73 74 5f  z hi abc}}.test_
2820: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 33 20 7b  expr epxr-3.33 {
2830: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
2840: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 31 3c  L} {coalesce(t1<
2850: 74 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  t2,99)} 99.test_
2860: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 34 20 7b  expr epxr-3.34 {
2870: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
2880: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 32 3c  L} {coalesce(t2<
2890: 74 31 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  t1,99)} 99.test_
28a0: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 35 20 7b  expr epxr-3.35 {
28b0: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
28c0: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 31 3e  L} {coalesce(t1>
28d0: 74 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  t2,99)} 99.test_
28e0: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 36 20 7b  expr epxr-3.36 {
28f0: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
2900: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 32 3e  L} {coalesce(t2>
2910: 74 31 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  t1,99)} 99.test_
2920: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 37 20 7b  expr epxr-3.37 {
2930: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
2940: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 31 3c  L} {coalesce(t1<
2950: 3d 74 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74  =t2,99)} 99.test
2960: 5f 65 78 70 72 20 65 70 78 72 2d 33 2e 33 38 20  _expr epxr-3.38 
2970: 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55  {t1='abc', t2=NU
2980: 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 32  LL} {coalesce(t2
2990: 3c 3d 74 31 2c 39 39 29 7d 20 39 39 0a 74 65 73  <=t1,99)} 99.tes
29a0: 74 5f 65 78 70 72 20 65 70 78 72 2d 33 2e 33 39  t_expr epxr-3.39
29b0: 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e   {t1='abc', t2=N
29c0: 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74  ULL} {coalesce(t
29d0: 31 3e 3d 74 32 2c 39 39 29 7d 20 39 39 0a 74 65  1>=t2,99)} 99.te
29e0: 73 74 5f 65 78 70 72 20 65 70 78 72 2d 33 2e 34  st_expr epxr-3.4
29f0: 30 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  0 {t1='abc', t2=
2a00: 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28  NULL} {coalesce(
2a10: 74 32 3e 3d 74 31 2c 39 39 29 7d 20 39 39 0a 74  t2>=t1,99)} 99.t
2a20: 65 73 74 5f 65 78 70 72 20 65 70 78 72 2d 33 2e  est_expr epxr-3.
2a30: 34 31 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  41 {t1='abc', t2
2a40: 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65  =NULL} {coalesce
2a50: 28 74 31 3d 3d 74 32 2c 39 39 29 7d 20 39 39 0a  (t1==t2,99)} 99.
2a60: 74 65 73 74 5f 65 78 70 72 20 65 70 78 72 2d 33  test_expr epxr-3
2a70: 2e 34 32 20 7b 74 31 3d 27 61 62 63 27 2c 20 74  .42 {t1='abc', t
2a80: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
2a90: 65 28 74 32 3d 3d 74 31 2c 39 39 29 7d 20 39 39  e(t2==t1,99)} 99
2aa0: 0a 74 65 73 74 5f 65 78 70 72 20 65 70 78 72 2d  .test_expr epxr-
2ab0: 33 2e 34 33 20 7b 74 31 3d 27 61 62 63 27 2c 20  3.43 {t1='abc', 
2ac0: 74 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73  t2=NULL} {coales
2ad0: 63 65 28 74 31 21 3d 74 32 2c 39 39 29 7d 20 39  ce(t1!=t2,99)} 9
2ae0: 39 0a 74 65 73 74 5f 65 78 70 72 20 65 70 78 72  9.test_expr epxr
2af0: 2d 33 2e 34 34 20 7b 74 31 3d 27 61 62 63 27 2c  -3.44 {t1='abc',
2b00: 20 74 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65   t2=NULL} {coale
2b10: 73 63 65 28 74 32 21 3d 74 31 2c 39 39 29 7d 20  sce(t2!=t1,99)} 
2b20: 39 39 0a 0a 74 65 73 74 5f 65 78 70 72 20 65 78  99..test_expr ex
2b30: 70 72 2d 34 2e 31 20 7b 74 31 3d 27 61 62 63 27  pr-4.1 {t1='abc'
2b40: 2c 20 74 32 3d 27 41 62 63 27 7d 20 7b 74 31 3c  , t2='Abc'} {t1<
2b50: 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  t2} 0.test_expr 
2b60: 65 78 70 72 2d 34 2e 32 20 7b 74 31 3d 27 61 62  expr-4.2 {t1='ab
2b70: 63 27 2c 20 74 32 3d 27 41 62 63 27 7d 20 7b 74  c', t2='Abc'} {t
2b80: 31 3e 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  1>t2} 1.test_exp
2b90: 72 20 65 78 70 72 2d 34 2e 33 20 7b 74 31 3d 27  r expr-4.3 {t1='
2ba0: 61 62 63 27 2c 20 74 32 3d 27 42 62 63 27 7d 20  abc', t2='Bbc'} 
2bb0: 7b 74 31 3c 74 32 7d 20 30 0a 74 65 73 74 5f 65  {t1<t2} 0.test_e
2bc0: 78 70 72 20 65 78 70 72 2d 34 2e 34 20 7b 74 31  xpr expr-4.4 {t1
2bd0: 3d 27 61 62 63 27 2c 20 74 32 3d 27 42 62 63 27  ='abc', t2='Bbc'
2be0: 7d 20 7b 74 31 3e 74 32 7d 20 31 0a 74 65 73 74  } {t1>t2} 1.test
2bf0: 5f 65 78 70 72 20 65 78 70 72 2d 34 2e 35 20 7b  _expr expr-4.5 {
2c00: 74 31 3d 27 30 27 2c 20 74 32 3d 27 30 2e 30 27  t1='0', t2='0.0'
2c10: 7d 20 7b 74 31 3d 3d 74 32 7d 20 30 0a 74 65 73  } {t1==t2} 0.tes
2c20: 74 5f 65 78 70 72 20 65 78 70 72 2d 34 2e 36 20  t_expr expr-4.6 
2c30: 7b 74 31 3d 27 30 2e 30 30 30 27 2c 20 74 32 3d  {t1='0.000', t2=
2c40: 27 30 2e 30 27 7d 20 7b 74 31 3d 3d 74 32 7d 20  '0.0'} {t1==t2} 
2c50: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
2c60: 2d 34 2e 37 20 7b 74 31 3d 27 20 30 2e 30 30 30  -4.7 {t1=' 0.000
2c70: 27 2c 20 74 32 3d 27 20 30 2e 30 27 7d 20 7b 74  ', t2=' 0.0'} {t
2c80: 31 3d 3d 74 32 7d 20 30 0a 74 65 73 74 5f 65 78  1==t2} 0.test_ex
2c90: 70 72 20 65 78 70 72 2d 34 2e 38 20 7b 74 31 3d  pr expr-4.8 {t1=
2ca0: 27 30 2e 30 27 2c 20 74 32 3d 27 61 62 63 27 7d  '0.0', t2='abc'}
2cb0: 20 7b 74 31 3c 74 32 7d 20 31 0a 74 65 73 74 5f   {t1<t2} 1.test_
2cc0: 65 78 70 72 20 65 78 70 72 2d 34 2e 39 20 7b 74  expr expr-4.9 {t
2cd0: 31 3d 27 30 2e 30 27 2c 20 74 32 3d 27 61 62 63  1='0.0', t2='abc
2ce0: 27 7d 20 7b 74 31 3d 3d 74 32 7d 20 30 0a 74 65  '} {t1==t2} 0.te
2cf0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 34 2e 31  st_expr expr-4.1
2d00: 30 20 7b 72 31 3d 27 30 2e 30 27 2c 20 72 32 3d  0 {r1='0.0', r2=
2d10: 27 61 62 63 27 7d 20 7b 72 31 3e 72 32 7d 20 30  'abc'} {r1>r2} 0
2d20: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
2d30: 34 2e 31 31 20 7b 72 31 3d 27 61 62 63 27 2c 20  4.11 {r1='abc', 
2d40: 72 32 3d 27 41 62 63 27 7d 20 7b 72 31 3c 72 32  r2='Abc'} {r1<r2
2d50: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
2d60: 70 72 2d 34 2e 31 32 20 7b 72 31 3d 27 61 62 63  pr-4.12 {r1='abc
2d70: 27 2c 20 72 32 3d 27 41 62 63 27 7d 20 7b 72 31  ', r2='Abc'} {r1
2d80: 3e 72 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72  >r2} 1.test_expr
2d90: 20 65 78 70 72 2d 34 2e 31 33 20 7b 72 31 3d 27   expr-4.13 {r1='
2da0: 61 62 63 27 2c 20 72 32 3d 27 42 62 63 27 7d 20  abc', r2='Bbc'} 
2db0: 7b 72 31 3c 72 32 7d 20 30 0a 74 65 73 74 5f 65  {r1<r2} 0.test_e
2dc0: 78 70 72 20 65 78 70 72 2d 34 2e 31 34 20 7b 72  xpr expr-4.14 {r
2dd0: 31 3d 27 61 62 63 27 2c 20 72 32 3d 27 42 62 63  1='abc', r2='Bbc
2de0: 27 7d 20 7b 72 31 3e 72 32 7d 20 31 0a 74 65 73  '} {r1>r2} 1.tes
2df0: 74 5f 65 78 70 72 20 65 78 70 72 2d 34 2e 31 35  t_expr expr-4.15
2e00: 20 7b 72 31 3d 27 30 27 2c 20 72 32 3d 27 30 2e   {r1='0', r2='0.
2e10: 30 27 7d 20 7b 72 31 3d 3d 72 32 7d 20 31 0a 74  0'} {r1==r2} 1.t
2e20: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 34 2e  est_expr expr-4.
2e30: 31 36 20 7b 72 31 3d 27 30 2e 30 30 30 27 2c 20  16 {r1='0.000', 
2e40: 72 32 3d 27 30 2e 30 27 7d 20 7b 72 31 3d 3d 72  r2='0.0'} {r1==r
2e50: 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65  2} 1.test_expr e
2e60: 78 70 72 2d 34 2e 31 37 20 7b 72 31 3d 27 20 30  xpr-4.17 {r1=' 0
2e70: 2e 30 30 30 27 2c 20 72 32 3d 27 20 30 2e 30 27  .000', r2=' 0.0'
2e80: 7d 20 7b 72 31 3d 3d 72 32 7d 20 30 0a 74 65 73  } {r1==r2} 0.tes
2e90: 74 5f 65 78 70 72 20 65 78 70 72 2d 34 2e 31 38  t_expr expr-4.18
2ea0: 20 7b 72 31 3d 27 30 2e 30 27 2c 20 72 32 3d 27   {r1='0.0', r2='
2eb0: 61 62 63 27 7d 20 7b 72 31 3c 72 32 7d 20 31 0a  abc'} {r1<r2} 1.
2ec0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 34  test_expr expr-4
2ed0: 2e 31 39 20 7b 72 31 3d 27 30 2e 30 27 2c 20 72  .19 {r1='0.0', r
2ee0: 32 3d 27 61 62 63 27 7d 20 7b 72 31 3d 3d 72 32  2='abc'} {r1==r2
2ef0: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
2f00: 70 72 2d 34 2e 32 30 20 7b 72 31 3d 27 30 2e 30  pr-4.20 {r1='0.0
2f10: 27 2c 20 72 32 3d 27 61 62 63 27 7d 20 7b 72 31  ', r2='abc'} {r1
2f20: 3e 72 32 7d 20 30 0a 0a 23 20 43 53 4c 20 69 73  >r2} 0..# CSL is
2f30: 20 74 72 75 65 20 69 66 20 4c 49 4b 45 20 69 73   true if LIKE is
2f40: 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 20   case sensitive 
2f50: 61 6e 64 20 66 61 6c 73 65 20 69 66 20 6e 6f 74  and false if not
2f60: 2e 0a 23 20 4e 43 53 4c 20 69 73 20 74 68 65 20  ..# NCSL is the 
2f70: 6f 70 70 6f 73 69 74 65 2e 20 20 55 73 65 20 74  opposite.  Use t
2f80: 68 65 73 65 20 76 61 72 69 61 62 6c 65 73 20 61  hese variables a
2f90: 73 20 74 68 65 20 72 65 73 75 6c 74 0a 23 20 6f  s the result.# o
2fa0: 6e 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 68 65  n operations whe
2fb0: 72 65 20 63 61 73 65 20 6d 61 6b 65 73 20 61 20  re case makes a 
2fc0: 64 69 66 66 65 72 65 6e 63 65 2e 0a 73 65 74 20  difference..set 
2fd0: 43 53 4c 20 24 73 71 6c 69 74 65 5f 6f 70 74 69  CSL $sqlite_opti
2fe0: 6f 6e 73 28 63 61 73 65 73 65 6e 73 69 74 69 76  ons(casesensitiv
2ff0: 65 6c 69 6b 65 29 0a 73 65 74 20 4e 43 53 4c 20  elike).set NCSL 
3000: 5b 65 78 70 72 20 7b 21 24 43 53 4c 7d 5d 0a 0a  [expr {!$CSL}]..
3010: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
3020: 2e 31 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  .1 {t1='abc', t2
3030: 3d 27 78 79 7a 27 7d 20 7b 74 31 20 4c 49 4b 45  ='xyz'} {t1 LIKE
3040: 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72   t2} 0.test_expr
3050: 20 65 78 70 72 2d 35 2e 32 61 20 7b 74 31 3d 27   expr-5.2a {t1='
3060: 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27 7d 20  abc', t2='abc'} 
3070: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 74  {t1 LIKE t2} 1.t
3080: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
3090: 32 62 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  2b {t1='abc', t2
30a0: 3d 27 41 42 43 27 7d 20 7b 74 31 20 4c 49 4b 45  ='ABC'} {t1 LIKE
30b0: 20 74 32 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f   t2} $NCSL.test_
30c0: 65 78 70 72 20 65 78 70 72 2d 35 2e 33 61 20 7b  expr expr-5.3a {
30d0: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 5f  t1='abc', t2='a_
30e0: 63 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  c'} {t1 LIKE t2}
30f0: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
3100: 72 2d 35 2e 33 62 20 7b 74 31 3d 27 61 62 63 27  r-5.3b {t1='abc'
3110: 2c 20 74 32 3d 27 41 5f 43 27 7d 20 7b 74 31 20  , t2='A_C'} {t1 
3120: 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 74  LIKE t2} $NCSL.t
3130: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
3140: 34 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  4 {t1='abc', t2=
3150: 27 61 62 63 5f 27 7d 20 7b 74 31 20 4c 49 4b 45  'abc_'} {t1 LIKE
3160: 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72   t2} 0.test_expr
3170: 20 65 78 70 72 2d 35 2e 35 61 20 7b 74 31 3d 27   expr-5.5a {t1='
3180: 61 62 63 27 2c 20 74 32 3d 27 61 25 63 27 7d 20  abc', t2='a%c'} 
3190: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 74  {t1 LIKE t2} 1.t
31a0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
31b0: 35 62 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  5b {t1='abc', t2
31c0: 3d 27 41 25 43 27 7d 20 7b 74 31 20 4c 49 4b 45  ='A%C'} {t1 LIKE
31d0: 20 74 32 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f   t2} $NCSL.test_
31e0: 65 78 70 72 20 65 78 70 72 2d 35 2e 35 63 20 7b  expr expr-5.5c {
31f0: 74 31 3d 27 61 62 64 63 27 2c 20 74 32 3d 27 61  t1='abdc', t2='a
3200: 25 63 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32  %c'} {t1 LIKE t2
3210: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
3220: 70 72 2d 35 2e 35 64 20 7b 74 31 3d 27 61 63 27  pr-5.5d {t1='ac'
3230: 2c 20 74 32 3d 27 61 25 63 27 7d 20 7b 74 31 20  , t2='a%c'} {t1 
3240: 4c 49 4b 45 20 74 32 7d 20 31 0a 74 65 73 74 5f  LIKE t2} 1.test_
3250: 65 78 70 72 20 65 78 70 72 2d 35 2e 35 65 20 7b  expr expr-5.5e {
3260: 74 31 3d 27 61 63 27 2c 20 74 32 3d 27 41 25 43  t1='ac', t2='A%C
3270: 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20  '} {t1 LIKE t2} 
3280: 24 4e 43 53 4c 0a 74 65 73 74 5f 65 78 70 72 20  $NCSL.test_expr 
3290: 65 78 70 72 2d 35 2e 36 61 20 7b 74 31 3d 27 61  expr-5.6a {t1='a
32a0: 62 78 79 7a 7a 79 63 27 2c 20 74 32 3d 27 61 25  bxyzzyc', t2='a%
32b0: 63 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  c'} {t1 LIKE t2}
32c0: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
32d0: 72 2d 35 2e 36 62 20 7b 74 31 3d 27 61 62 78 79  r-5.6b {t1='abxy
32e0: 7a 7a 79 63 27 2c 20 74 32 3d 27 41 25 43 27 7d  zzyc', t2='A%C'}
32f0: 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e   {t1 LIKE t2} $N
3300: 43 53 4c 0a 74 65 73 74 5f 65 78 70 72 20 65 78  CSL.test_expr ex
3310: 70 72 2d 35 2e 37 61 20 7b 74 31 3d 27 61 62 78  pr-5.7a {t1='abx
3320: 79 7a 7a 79 27 2c 20 74 32 3d 27 61 25 63 27 7d  yzzy', t2='a%c'}
3330: 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 30 0a   {t1 LIKE t2} 0.
3340: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
3350: 2e 37 62 20 7b 74 31 3d 27 61 62 78 79 7a 7a 79  .7b {t1='abxyzzy
3360: 27 2c 20 74 32 3d 27 41 25 43 27 7d 20 7b 74 31  ', t2='A%C'} {t1
3370: 20 4c 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74   LIKE t2} 0.test
3380: 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 38 61 20  _expr expr-5.8a 
3390: 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63 78 27 2c  {t1='abxyzzycx',
33a0: 20 74 32 3d 27 61 25 63 27 7d 20 7b 74 31 20 4c   t2='a%c'} {t1 L
33b0: 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  IKE t2} 0.test_e
33c0: 78 70 72 20 65 78 70 72 2d 35 2e 38 62 20 7b 74  xpr expr-5.8b {t
33d0: 31 3d 27 61 62 78 79 7a 7a 79 63 79 27 2c 20 74  1='abxyzzycy', t
33e0: 32 3d 27 61 25 63 78 27 7d 20 7b 74 31 20 4c 49  2='a%cx'} {t1 LI
33f0: 4b 45 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78  KE t2} 0.test_ex
3400: 70 72 20 65 78 70 72 2d 35 2e 38 63 20 7b 74 31  pr expr-5.8c {t1
3410: 3d 27 61 62 78 79 7a 7a 79 63 78 27 2c 20 74 32  ='abxyzzycx', t2
3420: 3d 27 41 25 43 27 7d 20 7b 74 31 20 4c 49 4b 45  ='A%C'} {t1 LIKE
3430: 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72   t2} 0.test_expr
3440: 20 65 78 70 72 2d 35 2e 38 64 20 7b 74 31 3d 27   expr-5.8d {t1='
3450: 61 62 78 79 7a 7a 79 63 79 27 2c 20 74 32 3d 27  abxyzzycy', t2='
3460: 41 25 43 58 27 7d 20 7b 74 31 20 4c 49 4b 45 20  A%CX'} {t1 LIKE 
3470: 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  t2} 0.test_expr 
3480: 65 78 70 72 2d 35 2e 39 61 20 7b 74 31 3d 27 61  expr-5.9a {t1='a
3490: 62 63 27 2c 20 74 32 3d 27 61 25 5f 63 27 7d 20  bc', t2='a%_c'} 
34a0: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 74  {t1 LIKE t2} 1.t
34b0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
34c0: 39 62 20 7b 74 31 3d 27 61 63 27 2c 20 74 32 3d  9b {t1='ac', t2=
34d0: 27 61 25 5f 63 27 7d 20 7b 74 31 20 4c 49 4b 45  'a%_c'} {t1 LIKE
34e0: 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72   t2} 0.test_expr
34f0: 20 65 78 70 72 2d 35 2e 39 63 20 7b 74 31 3d 27   expr-5.9c {t1='
3500: 61 62 63 27 2c 20 74 32 3d 27 41 25 5f 43 27 7d  abc', t2='A%_C'}
3510: 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e   {t1 LIKE t2} $N
3520: 43 53 4c 0a 74 65 73 74 5f 65 78 70 72 20 65 78  CSL.test_expr ex
3530: 70 72 2d 35 2e 39 64 20 7b 74 31 3d 27 61 63 27  pr-5.9d {t1='ac'
3540: 2c 20 74 32 3d 27 41 25 5f 43 27 7d 20 7b 74 31  , t2='A%_C'} {t1
3550: 20 4c 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74   LIKE t2} 0.test
3560: 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31 30 61  _expr expr-5.10a
3570: 20 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63 27 2c   {t1='abxyzzyc',
3580: 20 74 32 3d 27 61 25 5f 63 27 7d 20 7b 74 31 20   t2='a%_c'} {t1 
3590: 4c 49 4b 45 20 74 32 7d 20 31 0a 74 65 73 74 5f  LIKE t2} 1.test_
35a0: 65 78 70 72 20 65 78 70 72 2d 35 2e 31 30 62 20  expr expr-5.10b 
35b0: 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63 27 2c 20  {t1='abxyzzyc', 
35c0: 74 32 3d 27 41 25 5f 43 27 7d 20 7b 74 31 20 4c  t2='A%_C'} {t1 L
35d0: 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 74 65  IKE t2} $NCSL.te
35e0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31  st_expr expr-5.1
35f0: 31 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  1 {t1='abc', t2=
3600: 27 78 79 7a 27 7d 20 7b 74 31 20 4e 4f 54 20 4c  'xyz'} {t1 NOT L
3610: 49 4b 45 20 74 32 7d 20 31 0a 74 65 73 74 5f 65  IKE t2} 1.test_e
3620: 78 70 72 20 65 78 70 72 2d 35 2e 31 32 61 20 7b  xpr expr-5.12a {
3630: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 62  t1='abc', t2='ab
3640: 63 27 7d 20 7b 74 31 20 4e 4f 54 20 4c 49 4b 45  c'} {t1 NOT LIKE
3650: 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72   t2} 0.test_expr
3660: 20 65 78 70 72 2d 35 2e 31 32 62 20 7b 74 31 3d   expr-5.12b {t1=
3670: 27 61 62 63 27 2c 20 74 32 3d 27 41 42 43 27 7d  'abc', t2='ABC'}
3680: 20 7b 74 31 20 4e 4f 54 20 4c 49 4b 45 20 74 32   {t1 NOT LIKE t2
3690: 7d 20 24 43 53 4c 0a 0a 23 20 54 68 65 20 66 6f  } $CSL..# The fo
36a0: 6c 6c 6f 77 69 6e 67 20 74 65 73 74 73 20 6f 6e  llowing tests on
36b0: 6c 79 20 77 6f 72 6b 20 6f 6e 20 76 65 72 73 69  ly work on versi
36c0: 6f 6e 73 20 6f 66 20 54 43 4c 20 74 68 61 74 20  ons of TCL that 
36d0: 73 75 70 70 6f 72 74 20 55 6e 69 63 6f 64 65 0a  support Unicode.
36e0: 23 0a 69 66 20 7b 22 5c 75 31 32 33 34 22 21 3d  #.if {"\u1234"!=
36f0: 22 75 31 32 33 34 22 7d 20 7b 0a 20 20 74 65 73  "u1234"} {.  tes
3700: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31 33  t_expr expr-5.13
3710: 61 20 22 74 31 3d 27 61 5c 75 30 30 38 30 63 27  a "t1='a\u0080c'
3720: 2c 20 74 32 3d 27 61 5f 63 27 22 20 7b 74 31 20  , t2='a_c'" {t1 
3730: 4c 49 4b 45 20 74 32 7d 20 31 0a 20 20 74 65 73  LIKE t2} 1.  tes
3740: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31 33  t_expr expr-5.13
3750: 62 20 22 74 31 3d 27 61 5c 75 30 30 38 30 63 27  b "t1='a\u0080c'
3760: 2c 20 74 32 3d 27 41 5f 43 27 22 20 7b 74 31 20  , t2='A_C'" {t1 
3770: 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 20  LIKE t2} $NCSL. 
3780: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
3790: 35 2e 31 34 61 20 22 74 31 3d 27 61 5c 75 30 37  5.14a "t1='a\u07
37a0: 46 46 63 27 2c 20 74 32 3d 27 61 5f 63 27 22 20  FFc', t2='a_c'" 
37b0: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 20  {t1 LIKE t2} 1. 
37c0: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
37d0: 35 2e 31 34 62 20 22 74 31 3d 27 61 5c 75 30 37  5.14b "t1='a\u07
37e0: 46 46 63 27 2c 20 74 32 3d 27 41 5f 43 27 22 20  FFc', t2='A_C'" 
37f0: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e 43  {t1 LIKE t2} $NC
3800: 53 4c 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65  SL.  test_expr e
3810: 78 70 72 2d 35 2e 31 35 61 20 22 74 31 3d 27 61  xpr-5.15a "t1='a
3820: 5c 75 30 38 30 30 63 27 2c 20 74 32 3d 27 61 5f  \u0800c', t2='a_
3830: 63 27 22 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  c'" {t1 LIKE t2}
3840: 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   1.  test_expr e
3850: 78 70 72 2d 35 2e 31 35 62 20 22 74 31 3d 27 61  xpr-5.15b "t1='a
3860: 5c 75 30 38 30 30 63 27 2c 20 74 32 3d 27 41 5f  \u0800c', t2='A_
3870: 43 27 22 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  C'" {t1 LIKE t2}
3880: 20 24 4e 43 53 4c 0a 20 20 74 65 73 74 5f 65 78   $NCSL.  test_ex
3890: 70 72 20 65 78 70 72 2d 35 2e 31 36 61 20 22 74  pr expr-5.16a "t
38a0: 31 3d 27 61 5c 75 46 46 46 46 63 27 2c 20 74 32  1='a\uFFFFc', t2
38b0: 3d 27 61 5f 63 27 22 20 7b 74 31 20 4c 49 4b 45  ='a_c'" {t1 LIKE
38c0: 20 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78   t2} 1.  test_ex
38d0: 70 72 20 65 78 70 72 2d 35 2e 31 36 62 20 22 74  pr expr-5.16b "t
38e0: 31 3d 27 61 5c 75 46 46 46 46 63 27 2c 20 74 32  1='a\uFFFFc', t2
38f0: 3d 27 41 5f 43 27 22 20 7b 74 31 20 4c 49 4b 45  ='A_C'" {t1 LIKE
3900: 20 74 32 7d 20 24 4e 43 53 4c 0a 20 20 74 65 73   t2} $NCSL.  tes
3910: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31 37  t_expr expr-5.17
3920: 20 22 74 31 3d 27 61 5c 75 30 30 38 30 27 2c 20   "t1='a\u0080', 
3930: 74 32 3d 27 41 5f 5f 27 22 20 7b 74 31 20 4c 49  t2='A__'" {t1 LI
3940: 4b 45 20 74 32 7d 20 30 0a 20 20 74 65 73 74 5f  KE t2} 0.  test_
3950: 65 78 70 72 20 65 78 70 72 2d 35 2e 31 38 20 22  expr expr-5.18 "
3960: 74 31 3d 27 61 5c 75 30 37 46 46 27 2c 20 74 32  t1='a\u07FF', t2
3970: 3d 27 41 5f 5f 27 22 20 7b 74 31 20 4c 49 4b 45  ='A__'" {t1 LIKE
3980: 20 74 32 7d 20 30 0a 20 20 74 65 73 74 5f 65 78   t2} 0.  test_ex
3990: 70 72 20 65 78 70 72 2d 35 2e 31 39 20 22 74 31  pr expr-5.19 "t1
39a0: 3d 27 61 5c 75 30 38 30 30 27 2c 20 74 32 3d 27  ='a\u0800', t2='
39b0: 41 5f 5f 27 22 20 7b 74 31 20 4c 49 4b 45 20 74  A__'" {t1 LIKE t
39c0: 32 7d 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72  2} 0.  test_expr
39d0: 20 65 78 70 72 2d 35 2e 32 30 20 22 74 31 3d 27   expr-5.20 "t1='
39e0: 61 5c 75 46 46 46 46 27 2c 20 74 32 3d 27 41 5f  a\uFFFF', t2='A_
39f0: 5f 27 22 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  _'" {t1 LIKE t2}
3a00: 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   0.  test_expr e
3a10: 78 70 72 2d 35 2e 32 31 61 20 22 74 31 3d 27 61  xpr-5.21a "t1='a
3a20: 78 5c 75 41 42 43 44 27 2c 20 74 32 3d 27 61 5f  x\uABCD', t2='a_
3a30: 5c 75 41 42 43 44 27 22 20 7b 74 31 20 4c 49 4b  \uABCD'" {t1 LIK
3a40: 45 20 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65  E t2} 1.  test_e
3a50: 78 70 72 20 65 78 70 72 2d 35 2e 32 31 62 20 22  xpr expr-5.21b "
3a60: 74 31 3d 27 61 78 5c 75 41 42 43 44 27 2c 20 74  t1='ax\uABCD', t
3a70: 32 3d 27 41 5f 5c 75 41 42 43 44 27 22 20 7b 74  2='A_\uABCD'" {t
3a80: 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c  1 LIKE t2} $NCSL
3a90: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
3aa0: 72 2d 35 2e 32 32 61 20 22 74 31 3d 27 61 78 5c  r-5.22a "t1='ax\
3ab0: 75 31 32 33 34 27 2c 20 74 32 3d 27 61 25 5c 75  u1234', t2='a%\u
3ac0: 31 32 33 34 27 22 20 7b 74 31 20 4c 49 4b 45 20  1234'" {t1 LIKE 
3ad0: 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70  t2} 1.  test_exp
3ae0: 72 20 65 78 70 72 2d 35 2e 32 32 62 20 22 74 31  r expr-5.22b "t1
3af0: 3d 27 61 78 5c 75 31 32 33 34 27 2c 20 74 32 3d  ='ax\u1234', t2=
3b00: 27 41 25 5c 75 31 32 33 34 27 22 20 7b 74 31 20  'A%\u1234'" {t1 
3b10: 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 20  LIKE t2} $NCSL. 
3b20: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
3b30: 35 2e 32 33 61 20 22 74 31 3d 27 61 78 5c 75 46  5.23a "t1='ax\uF
3b40: 45 44 43 27 2c 20 74 32 3d 27 61 5f 25 27 22 20  EDC', t2='a_%'" 
3b50: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 20  {t1 LIKE t2} 1. 
3b60: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
3b70: 35 2e 32 33 62 20 22 74 31 3d 27 61 78 5c 75 46  5.23b "t1='ax\uF
3b80: 45 44 43 27 2c 20 74 32 3d 27 41 5f 25 27 22 20  EDC', t2='A_%'" 
3b90: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e 43  {t1 LIKE t2} $NC
3ba0: 53 4c 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65  SL.  test_expr e
3bb0: 78 70 72 2d 35 2e 32 34 61 20 22 74 31 3d 27 61  xpr-5.24a "t1='a
3bc0: 78 5c 75 46 45 44 43 79 5c 75 46 45 44 43 27 2c  x\uFEDCy\uFEDC',
3bd0: 20 74 32 3d 27 61 25 5c 75 46 45 44 43 27 22 20   t2='a%\uFEDC'" 
3be0: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 20  {t1 LIKE t2} 1. 
3bf0: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
3c00: 35 2e 32 34 62 20 22 74 31 3d 27 61 78 5c 75 46  5.24b "t1='ax\uF
3c10: 45 44 43 79 5c 75 46 45 44 43 27 2c 20 74 32 3d  EDCy\uFEDC', t2=
3c20: 27 41 25 5c 75 46 45 44 43 27 22 20 7b 74 31 20  'A%\uFEDC'" {t1 
3c30: 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 7d  LIKE t2} $NCSL.}
3c40: 0a 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  ..test_expr expr
3c50: 2d 35 2e 35 34 20 7b 74 31 3d 27 61 62 63 27 2c  -5.54 {t1='abc',
3c60: 20 74 32 3d 4e 55 4c 4c 7d 20 7b 74 31 20 4c 49   t2=NULL} {t1 LI
3c70: 4b 45 20 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74  KE t2} {{}}.test
3c80: 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 35 35 20  _expr expr-5.55 
3c90: 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55  {t1='abc', t2=NU
3ca0: 4c 4c 7d 20 7b 74 31 20 4e 4f 54 20 4c 49 4b 45  LL} {t1 NOT LIKE
3cb0: 20 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65   t2} {{}}.test_e
3cc0: 78 70 72 20 65 78 70 72 2d 35 2e 35 36 20 7b 74  xpr expr-5.56 {t
3cd0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c 4c  1='abc', t2=NULL
3ce0: 7d 20 7b 74 32 20 4c 49 4b 45 20 74 31 7d 20 7b  } {t2 LIKE t1} {
3cf0: 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78  {}}.test_expr ex
3d00: 70 72 2d 35 2e 35 37 20 7b 74 31 3d 27 61 62 63  pr-5.57 {t1='abc
3d10: 27 2c 20 74 32 3d 4e 55 4c 4c 7d 20 7b 74 32 20  ', t2=NULL} {t2 
3d20: 4e 4f 54 20 4c 49 4b 45 20 74 31 7d 20 7b 7b 7d  NOT LIKE t1} {{}
3d30: 7d 0a 0a 23 20 4c 49 4b 45 20 65 78 70 72 65 73  }..# LIKE expres
3d40: 73 69 6f 6e 73 20 74 68 61 74 20 75 73 65 20 45  sions that use E
3d50: 53 43 41 50 45 20 63 68 61 72 61 63 74 65 72 73  SCAPE characters
3d60: 2e 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  ..test_expr expr
3d70: 2d 35 2e 35 38 61 20 7b 74 31 3d 27 61 62 63 27  -5.58a {t1='abc'
3d80: 2c 20 74 32 3d 27 61 5f 63 27 7d 20 20 20 7b 74  , t2='a_c'}   {t
3d90: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
3da0: 20 27 37 27 7d 20 31 0a 74 65 73 74 5f 65 78 70   '7'} 1.test_exp
3db0: 72 20 65 78 70 72 2d 35 2e 35 38 62 20 7b 74 31  r expr-5.58b {t1
3dc0: 3d 27 61 62 63 27 2c 20 74 32 3d 27 41 5f 43 27  ='abc', t2='A_C'
3dd0: 7d 20 20 20 7b 74 31 20 4c 49 4b 45 20 74 32 20  }   {t1 LIKE t2 
3de0: 45 53 43 41 50 45 20 27 37 27 7d 20 24 4e 43 53  ESCAPE '7'} $NCS
3df0: 4c 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  L.test_expr expr
3e00: 2d 35 2e 35 39 61 20 7b 74 31 3d 27 61 5f 63 27  -5.59a {t1='a_c'
3e10: 2c 20 74 32 3d 27 61 37 5f 63 27 7d 20 20 7b 74  , t2='a7_c'}  {t
3e20: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
3e30: 20 27 37 27 7d 20 31 0a 74 65 73 74 5f 65 78 70   '7'} 1.test_exp
3e40: 72 20 65 78 70 72 2d 35 2e 35 39 62 20 7b 74 31  r expr-5.59b {t1
3e50: 3d 27 61 5f 63 27 2c 20 74 32 3d 27 41 37 5f 43  ='a_c', t2='A7_C
3e60: 27 7d 20 20 7b 74 31 20 4c 49 4b 45 20 74 32 20  '}  {t1 LIKE t2 
3e70: 45 53 43 41 50 45 20 27 37 27 7d 20 24 4e 43 53  ESCAPE '7'} $NCS
3e80: 4c 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  L.test_expr expr
3e90: 2d 35 2e 36 30 61 20 7b 74 31 3d 27 61 62 63 27  -5.60a {t1='abc'
3ea0: 2c 20 74 32 3d 27 61 37 5f 63 27 7d 20 20 7b 74  , t2='a7_c'}  {t
3eb0: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
3ec0: 20 27 37 27 7d 20 30 0a 74 65 73 74 5f 65 78 70   '7'} 0.test_exp
3ed0: 72 20 65 78 70 72 2d 35 2e 36 30 62 20 7b 74 31  r expr-5.60b {t1
3ee0: 3d 27 61 62 63 27 2c 20 74 32 3d 27 41 37 5f 43  ='abc', t2='A7_C
3ef0: 27 7d 20 20 7b 74 31 20 4c 49 4b 45 20 74 32 20  '}  {t1 LIKE t2 
3f00: 45 53 43 41 50 45 20 27 37 27 7d 20 30 0a 74 65  ESCAPE '7'} 0.te
3f10: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 36  st_expr expr-5.6
3f20: 31 61 20 7b 74 31 3d 27 61 37 58 63 27 2c 20 74  1a {t1='a7Xc', t
3f30: 32 3d 27 61 37 5f 63 27 7d 20 7b 74 31 20 4c 49  2='a7_c'} {t1 LI
3f40: 4b 45 20 74 32 20 45 53 43 41 50 45 20 27 37 27  KE t2 ESCAPE '7'
3f50: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
3f60: 70 72 2d 35 2e 36 31 62 20 7b 74 31 3d 27 61 37  pr-5.61b {t1='a7
3f70: 58 63 27 2c 20 74 32 3d 27 41 37 5f 43 27 7d 20  Xc', t2='A7_C'} 
3f80: 7b 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41  {t1 LIKE t2 ESCA
3f90: 50 45 20 27 37 27 7d 20 30 0a 74 65 73 74 5f 65  PE '7'} 0.test_e
3fa0: 78 70 72 20 65 78 70 72 2d 35 2e 36 32 61 20 7b  xpr expr-5.62a {
3fb0: 74 31 3d 27 61 62 63 64 65 27 2c 20 74 32 3d 27  t1='abcde', t2='
3fc0: 61 25 65 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  a%e'} {t1 LIKE t
3fd0: 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 31 0a  2 ESCAPE '7'} 1.
3fe0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
3ff0: 2e 36 32 62 20 7b 74 31 3d 27 61 62 63 64 65 27  .62b {t1='abcde'
4000: 2c 20 74 32 3d 27 41 25 45 27 7d 20 7b 74 31 20  , t2='A%E'} {t1 
4010: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4020: 37 27 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65  7'} $NCSL.test_e
4030: 78 70 72 20 65 78 70 72 2d 35 2e 36 33 61 20 7b  xpr expr-5.63a {
4040: 74 31 3d 27 61 62 63 64 65 27 2c 20 74 32 3d 27  t1='abcde', t2='
4050: 61 37 25 65 27 7d 20 7b 74 31 20 4c 49 4b 45 20  a7%e'} {t1 LIKE 
4060: 74 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 30  t2 ESCAPE '7'} 0
4070: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
4080: 35 2e 36 33 62 20 7b 74 31 3d 27 61 62 63 64 65  5.63b {t1='abcde
4090: 27 2c 20 74 32 3d 27 41 37 25 45 27 7d 20 7b 74  ', t2='A7%E'} {t
40a0: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
40b0: 20 27 37 27 7d 20 30 0a 74 65 73 74 5f 65 78 70   '7'} 0.test_exp
40c0: 72 20 65 78 70 72 2d 35 2e 36 34 61 20 7b 74 31  r expr-5.64a {t1
40d0: 3d 27 61 37 63 64 65 27 2c 20 74 32 3d 27 61 37  ='a7cde', t2='a7
40e0: 25 65 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32  %e'} {t1 LIKE t2
40f0: 20 45 53 43 41 50 45 20 27 37 27 7d 20 30 0a 74   ESCAPE '7'} 0.t
4100: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
4110: 36 34 62 20 7b 74 31 3d 27 61 37 63 64 65 27 2c  64b {t1='a7cde',
4120: 20 74 32 3d 27 41 37 25 45 27 7d 20 7b 74 31 20   t2='A7%E'} {t1 
4130: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4140: 37 27 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  7'} 0.test_expr 
4150: 65 78 70 72 2d 35 2e 36 35 61 20 7b 74 31 3d 27  expr-5.65a {t1='
4160: 61 37 63 64 65 27 2c 20 74 32 3d 27 61 37 37 25  a7cde', t2='a77%
4170: 65 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 20  e'} {t1 LIKE t2 
4180: 45 53 43 41 50 45 20 27 37 27 7d 20 31 0a 74 65  ESCAPE '7'} 1.te
4190: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 36  st_expr expr-5.6
41a0: 35 62 20 7b 74 31 3d 27 61 37 63 64 65 27 2c 20  5b {t1='a7cde', 
41b0: 74 32 3d 27 41 37 37 25 45 27 7d 20 7b 74 31 20  t2='A77%E'} {t1 
41c0: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
41d0: 37 27 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65  7'} $NCSL.test_e
41e0: 78 70 72 20 65 78 70 72 2d 35 2e 36 36 61 20 7b  xpr expr-5.66a {
41f0: 74 31 3d 27 61 62 63 37 27 2c 20 74 32 3d 27 61  t1='abc7', t2='a
4200: 25 37 37 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  %77'} {t1 LIKE t
4210: 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 31 0a  2 ESCAPE '7'} 1.
4220: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4230: 2e 36 36 62 20 7b 74 31 3d 27 61 62 63 37 27 2c  .66b {t1='abc7',
4240: 20 74 32 3d 27 41 25 37 37 27 7d 20 7b 74 31 20   t2='A%77'} {t1 
4250: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4260: 37 27 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65  7'} $NCSL.test_e
4270: 78 70 72 20 65 78 70 72 2d 35 2e 36 37 61 20 7b  xpr expr-5.67a {
4280: 74 31 3d 27 61 62 63 5f 27 2c 20 74 32 3d 27 61  t1='abc_', t2='a
4290: 25 37 5f 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  %7_'} {t1 LIKE t
42a0: 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 31 0a  2 ESCAPE '7'} 1.
42b0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
42c0: 2e 36 37 62 20 7b 74 31 3d 27 61 62 63 5f 27 2c  .67b {t1='abc_',
42d0: 20 74 32 3d 27 41 25 37 5f 27 7d 20 7b 74 31 20   t2='A%7_'} {t1 
42e0: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
42f0: 37 27 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65  7'} $NCSL.test_e
4300: 78 70 72 20 65 78 70 72 2d 35 2e 36 38 61 20 7b  xpr expr-5.68a {
4310: 74 31 3d 27 61 62 63 37 27 2c 20 74 32 3d 27 61  t1='abc7', t2='a
4320: 25 37 5f 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  %7_'} {t1 LIKE t
4330: 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 30 0a  2 ESCAPE '7'} 0.
4340: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4350: 2e 36 38 62 20 7b 74 31 3d 27 61 62 63 37 27 2c  .68b {t1='abc7',
4360: 20 74 32 3d 27 41 25 37 5f 27 7d 20 7b 74 31 20   t2='A%7_'} {t1 
4370: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4380: 37 27 7d 20 30 0a 0a 23 20 54 68 65 73 65 20 61  7'} 0..# These a
4390: 72 65 20 74 68 65 20 73 61 6d 65 20 74 65 73 74  re the same test
43a0: 20 61 73 20 74 68 65 20 62 6c 6f 63 6b 20 61 62   as the block ab
43b0: 6f 76 65 2c 20 62 75 74 20 75 73 69 6e 67 20 61  ove, but using a
43c0: 20 6d 75 6c 74 69 2d 62 79 74 65 20 0a 23 20 63   multi-byte .# c
43d0: 68 61 72 61 63 74 65 72 20 61 73 20 74 68 65 20  haracter as the 
43e0: 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65 72  escape character
43f0: 2e 0a 69 66 20 7b 22 5c 75 31 32 33 34 22 21 3d  ..if {"\u1234"!=
4400: 22 75 31 32 33 34 22 7d 20 7b 0a 20 20 74 65 73  "u1234"} {.  tes
4410: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 36 39  t_expr expr-5.69
4420: 61 20 22 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  a "t1='abc', t2=
4430: 27 61 5f 63 27 22 20 5c 0a 20 20 20 20 20 20 22  'a_c'" \.      "
4440: 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50  t1 LIKE t2 ESCAP
4450: 45 20 27 5c 75 31 32 33 34 27 22 20 31 0a 20 20  E '\u1234'" 1.  
4460: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4470: 2e 36 39 62 20 22 74 31 3d 27 61 62 63 27 2c 20  .69b "t1='abc', 
4480: 74 32 3d 27 41 5f 43 27 22 20 5c 0a 20 20 20 20  t2='A_C'" \.    
4490: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
44a0: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 24  CAPE '\u1234'" $
44b0: 4e 43 53 4c 0a 20 20 74 65 73 74 5f 65 78 70 72  NCSL.  test_expr
44c0: 20 65 78 70 72 2d 35 2e 37 30 61 20 22 74 31 3d   expr-5.70a "t1=
44d0: 27 61 5f 63 27 2c 20 74 32 3d 27 61 5c 75 31 32  'a_c', t2='a\u12
44e0: 33 34 5f 63 27 22 20 5c 0a 20 20 20 20 20 20 22  34_c'" \.      "
44f0: 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50  t1 LIKE t2 ESCAP
4500: 45 20 27 5c 75 31 32 33 34 27 22 20 31 0a 20 20  E '\u1234'" 1.  
4510: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4520: 2e 37 30 62 20 22 74 31 3d 27 61 5f 63 27 2c 20  .70b "t1='a_c', 
4530: 74 32 3d 27 41 5c 75 31 32 33 34 5f 43 27 22 20  t2='A\u1234_C'" 
4540: 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45  \.      "t1 LIKE
4550: 20 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32   t2 ESCAPE '\u12
4560: 33 34 27 22 20 24 4e 43 53 4c 0a 20 20 74 65 73  34'" $NCSL.  tes
4570: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 37 31  t_expr expr-5.71
4580: 61 20 22 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  a "t1='abc', t2=
4590: 27 61 5c 75 31 32 33 34 5f 63 27 22 20 5c 0a 20  'a\u1234_c'" \. 
45a0: 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45 20 74        "t1 LIKE t
45b0: 32 20 45 53 43 41 50 45 20 27 5c 75 31 32 33 34  2 ESCAPE '\u1234
45c0: 27 22 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72  '" 0.  test_expr
45d0: 20 65 78 70 72 2d 35 2e 37 31 62 20 22 74 31 3d   expr-5.71b "t1=
45e0: 27 61 62 63 27 2c 20 74 32 3d 27 41 5c 75 31 32  'abc', t2='A\u12
45f0: 33 34 5f 43 27 22 20 5c 0a 20 20 20 20 20 20 20  34_C'" \.       
4600: 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41  "t1 LIKE t2 ESCA
4610: 50 45 20 27 5c 75 31 32 33 34 27 22 20 30 0a 20  PE '\u1234'" 0. 
4620: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
4630: 35 2e 37 32 61 20 22 74 31 3d 27 61 5c 75 31 32  5.72a "t1='a\u12
4640: 33 34 58 63 27 2c 20 74 32 3d 27 61 5c 75 31 32  34Xc', t2='a\u12
4650: 33 34 5f 63 27 22 20 5c 0a 20 20 20 20 20 20 22  34_c'" \.      "
4660: 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50  t1 LIKE t2 ESCAP
4670: 45 20 27 5c 75 31 32 33 34 27 22 20 30 0a 20 20  E '\u1234'" 0.  
4680: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4690: 2e 37 32 62 20 22 74 31 3d 27 61 5c 75 31 32 33  .72b "t1='a\u123
46a0: 34 58 63 27 2c 20 74 32 3d 27 41 5c 75 31 32 33  4Xc', t2='A\u123
46b0: 34 5f 43 27 22 20 5c 0a 20 20 20 20 20 20 22 74  4_C'" \.      "t
46c0: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
46d0: 20 27 5c 75 31 32 33 34 27 22 20 30 0a 20 20 74   '\u1234'" 0.  t
46e0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
46f0: 37 33 61 20 22 74 31 3d 27 61 62 63 64 65 27 2c  73a "t1='abcde',
4700: 20 74 32 3d 27 61 25 65 27 22 20 5c 0a 20 20 20   t2='a%e'" \.   
4710: 20 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45     "t1 LIKE t2 E
4720: 53 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20  SCAPE '\u1234'" 
4730: 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78  1.  test_expr ex
4740: 70 72 2d 35 2e 37 33 62 20 22 74 31 3d 27 61 62  pr-5.73b "t1='ab
4750: 63 64 65 27 2c 20 74 32 3d 27 41 25 45 27 22 20  cde', t2='A%E'" 
4760: 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45  \.      "t1 LIKE
4770: 20 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32   t2 ESCAPE '\u12
4780: 33 34 27 22 20 24 4e 43 53 4c 0a 20 20 74 65 73  34'" $NCSL.  tes
4790: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 37 34  t_expr expr-5.74
47a0: 61 20 22 74 31 3d 27 61 62 63 64 65 27 2c 20 74  a "t1='abcde', t
47b0: 32 3d 27 61 5c 75 31 32 33 34 25 65 27 22 20 5c  2='a\u1234%e'" \
47c0: 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45 20  .      "t1 LIKE 
47d0: 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32 33  t2 ESCAPE '\u123
47e0: 34 27 22 20 30 0a 20 20 74 65 73 74 5f 65 78 70  4'" 0.  test_exp
47f0: 72 20 65 78 70 72 2d 35 2e 37 34 62 20 22 74 31  r expr-5.74b "t1
4800: 3d 27 61 62 63 64 65 27 2c 20 74 32 3d 27 41 5c  ='abcde', t2='A\
4810: 75 31 32 33 34 25 45 27 22 20 5c 0a 20 20 20 20  u1234%E'" \.    
4820: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
4830: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 30  CAPE '\u1234'" 0
4840: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
4850: 72 2d 35 2e 37 35 61 20 22 74 31 3d 27 61 5c 75  r-5.75a "t1='a\u
4860: 31 32 33 34 63 64 65 27 2c 20 74 32 3d 27 61 5c  1234cde', t2='a\
4870: 75 31 32 33 34 25 65 27 22 20 5c 0a 20 20 20 20  u1234%e'" \.    
4880: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
4890: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 30  CAPE '\u1234'" 0
48a0: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
48b0: 72 2d 35 2e 37 35 62 20 22 74 31 3d 27 61 5c 75  r-5.75b "t1='a\u
48c0: 31 32 33 34 63 64 65 27 2c 20 74 32 3d 27 41 5c  1234cde', t2='A\
48d0: 75 31 32 33 34 25 45 27 22 20 5c 0a 20 20 20 20  u1234%E'" \.    
48e0: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
48f0: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 30  CAPE '\u1234'" 0
4900: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
4910: 72 2d 35 2e 37 36 61 20 22 74 31 3d 27 61 5c 75  r-5.76a "t1='a\u
4920: 31 32 33 34 63 64 65 27 2c 20 74 32 3d 27 61 5c  1234cde', t2='a\
4930: 75 31 32 33 34 5c 75 31 32 33 34 25 65 27 22 20  u1234\u1234%e'" 
4940: 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45  \.      "t1 LIKE
4950: 20 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32   t2 ESCAPE '\u12
4960: 33 34 27 22 20 31 0a 20 20 74 65 73 74 5f 65 78  34'" 1.  test_ex
4970: 70 72 20 65 78 70 72 2d 35 2e 37 36 62 20 22 74  pr expr-5.76b "t
4980: 31 3d 27 61 5c 75 31 32 33 34 63 64 65 27 2c 20  1='a\u1234cde', 
4990: 74 32 3d 27 41 5c 75 31 32 33 34 5c 75 31 32 33  t2='A\u1234\u123
49a0: 34 25 45 27 22 20 5c 0a 20 20 20 20 20 20 22 74  4%E'" \.      "t
49b0: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
49c0: 20 27 5c 75 31 32 33 34 27 22 20 24 4e 43 53 4c   '\u1234'" $NCSL
49d0: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
49e0: 72 2d 35 2e 37 37 61 20 22 74 31 3d 27 61 62 63  r-5.77a "t1='abc
49f0: 5c 75 31 32 33 34 27 2c 20 74 32 3d 27 61 25 5c  \u1234', t2='a%\
4a00: 75 31 32 33 34 5c 75 31 32 33 34 27 22 20 5c 0a  u1234\u1234'" \.
4a10: 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45 20 74        "t1 LIKE t
4a20: 32 20 45 53 43 41 50 45 20 27 5c 75 31 32 33 34  2 ESCAPE '\u1234
4a30: 27 22 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72  '" 1.  test_expr
4a40: 20 65 78 70 72 2d 35 2e 37 37 62 20 22 74 31 3d   expr-5.77b "t1=
4a50: 27 61 62 63 5c 75 31 32 33 34 27 2c 20 74 32 3d  'abc\u1234', t2=
4a60: 27 41 25 5c 75 31 32 33 34 5c 75 31 32 33 34 27  'A%\u1234\u1234'
4a70: 22 20 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49  " \.      "t1 LI
4a80: 4b 45 20 74 32 20 45 53 43 41 50 45 20 27 5c 75  KE t2 ESCAPE '\u
4a90: 31 32 33 34 27 22 20 24 4e 43 53 4c 0a 20 20 74  1234'" $NCSL.  t
4aa0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
4ab0: 37 38 61 20 22 74 31 3d 27 61 62 63 5f 27 2c 20  78a "t1='abc_', 
4ac0: 74 32 3d 27 61 25 5c 75 31 32 33 34 5f 27 22 20  t2='a%\u1234_'" 
4ad0: 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45  \.      "t1 LIKE
4ae0: 20 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32   t2 ESCAPE '\u12
4af0: 33 34 27 22 20 31 0a 20 20 74 65 73 74 5f 65 78  34'" 1.  test_ex
4b00: 70 72 20 65 78 70 72 2d 35 2e 37 38 62 20 22 74  pr expr-5.78b "t
4b10: 31 3d 27 61 62 63 5f 27 2c 20 74 32 3d 27 41 25  1='abc_', t2='A%
4b20: 5c 75 31 32 33 34 5f 27 22 20 5c 0a 20 20 20 20  \u1234_'" \.    
4b30: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
4b40: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 24  CAPE '\u1234'" $
4b50: 4e 43 53 4c 0a 20 20 74 65 73 74 5f 65 78 70 72  NCSL.  test_expr
4b60: 20 65 78 70 72 2d 35 2e 37 39 61 20 22 74 31 3d   expr-5.79a "t1=
4b70: 27 61 62 63 5c 75 31 32 33 34 27 2c 20 74 32 3d  'abc\u1234', t2=
4b80: 27 61 25 5c 75 31 32 33 34 5f 27 22 20 5c 0a 20  'a%\u1234_'" \. 
4b90: 20 20 20 20 20 22 74 31 20 4c 49 4b 45 20 74 32       "t1 LIKE t2
4ba0: 20 45 53 43 41 50 45 20 27 5c 75 31 32 33 34 27   ESCAPE '\u1234'
4bb0: 22 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72 20  " 0.  test_expr 
4bc0: 65 78 70 72 2d 35 2e 37 39 62 20 22 74 31 3d 27  expr-5.79b "t1='
4bd0: 61 62 63 5c 75 31 32 33 34 27 2c 20 74 32 3d 27  abc\u1234', t2='
4be0: 41 25 5c 75 31 32 33 34 5f 27 22 20 5c 0a 20 20  A%\u1234_'" \.  
4bf0: 20 20 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20      "t1 LIKE t2 
4c00: 45 53 43 41 50 45 20 27 5c 75 31 32 33 34 27 22  ESCAPE '\u1234'"
4c10: 20 30 0a 7d 0a 0a 74 65 73 74 5f 65 78 70 72 20   0.}..test_expr 
4c20: 65 78 70 72 2d 36 2e 31 20 7b 74 31 3d 27 61 62  expr-6.1 {t1='ab
4c30: 63 27 2c 20 74 32 3d 27 78 79 7a 27 7d 20 7b 74  c', t2='xyz'} {t
4c40: 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73  1 GLOB t2} 0.tes
4c50: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32 20  t_expr expr-6.2 
4c60: 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 41  {t1='abc', t2='A
4c70: 42 43 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  BC'} {t1 GLOB t2
4c80: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
4c90: 70 72 2d 36 2e 33 20 7b 74 31 3d 27 61 62 63 27  pr-6.3 {t1='abc'
4ca0: 2c 20 74 32 3d 27 41 3f 43 27 7d 20 7b 74 31 20  , t2='A?C'} {t1 
4cb0: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
4cc0: 65 78 70 72 20 65 78 70 72 2d 36 2e 34 20 7b 74  expr expr-6.4 {t
4cd0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 3f 63  1='abc', t2='a?c
4ce0: 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20  '} {t1 GLOB t2} 
4cf0: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
4d00: 2d 36 2e 35 20 7b 74 31 3d 27 61 62 63 27 2c 20  -6.5 {t1='abc', 
4d10: 74 32 3d 27 61 62 63 3f 27 7d 20 7b 74 31 20 47  t2='abc?'} {t1 G
4d20: 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  LOB t2} 0.test_e
4d30: 78 70 72 20 65 78 70 72 2d 36 2e 36 20 7b 74 31  xpr expr-6.6 {t1
4d40: 3d 27 61 62 63 27 2c 20 74 32 3d 27 41 2a 43 27  ='abc', t2='A*C'
4d50: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
4d60: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
4d70: 36 2e 37 20 7b 74 31 3d 27 61 62 63 27 2c 20 74  6.7 {t1='abc', t
4d80: 32 3d 27 61 2a 63 27 7d 20 7b 74 31 20 47 4c 4f  2='a*c'} {t1 GLO
4d90: 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  B t2} 1.test_exp
4da0: 72 20 65 78 70 72 2d 36 2e 38 20 7b 74 31 3d 27  r expr-6.8 {t1='
4db0: 61 62 78 79 7a 7a 79 63 27 2c 20 74 32 3d 27 61  abxyzzyc', t2='a
4dc0: 2a 63 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  *c'} {t1 GLOB t2
4dd0: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
4de0: 70 72 2d 36 2e 39 20 7b 74 31 3d 27 61 62 78 79  pr-6.9 {t1='abxy
4df0: 7a 7a 79 27 2c 20 74 32 3d 27 61 2a 63 27 7d 20  zzy', t2='a*c'} 
4e00: 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74  {t1 GLOB t2} 0.t
4e10: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e  est_expr expr-6.
4e20: 31 30 20 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63  10 {t1='abxyzzyc
4e30: 78 27 2c 20 74 32 3d 27 61 2a 63 27 7d 20 7b 74  x', t2='a*c'} {t
4e40: 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73  1 GLOB t2} 0.tes
4e50: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 31 31  t_expr expr-6.11
4e60: 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27   {t1='abc', t2='
4e70: 78 79 7a 27 7d 20 7b 74 31 20 4e 4f 54 20 47 4c  xyz'} {t1 NOT GL
4e80: 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78  OB t2} 1.test_ex
4e90: 70 72 20 65 78 70 72 2d 36 2e 31 32 20 7b 74 31  pr expr-6.12 {t1
4ea0: 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27  ='abc', t2='abc'
4eb0: 7d 20 7b 74 31 20 4e 4f 54 20 47 4c 4f 42 20 74  } {t1 NOT GLOB t
4ec0: 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65  2} 0.test_expr e
4ed0: 78 70 72 2d 36 2e 31 33 20 7b 74 31 3d 27 61 62  xpr-6.13 {t1='ab
4ee0: 63 27 2c 20 74 32 3d 27 61 5b 62 78 5d 63 27 7d  c', t2='a[bx]c'}
4ef0: 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a   {t1 GLOB t2} 1.
4f00: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36  test_expr expr-6
4f10: 2e 31 34 20 7b 74 31 3d 27 61 62 63 27 2c 20 74  .14 {t1='abc', t
4f20: 32 3d 27 61 5b 63 78 5d 63 27 7d 20 7b 74 31 20  2='a[cx]c'} {t1 
4f30: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
4f40: 65 78 70 72 20 65 78 70 72 2d 36 2e 31 35 20 7b  expr expr-6.15 {
4f50: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 5b  t1='abc', t2='a[
4f60: 61 2d 64 5d 63 27 7d 20 7b 74 31 20 47 4c 4f 42  a-d]c'} {t1 GLOB
4f70: 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72   t2} 1.test_expr
4f80: 20 65 78 70 72 2d 36 2e 31 36 20 7b 74 31 3d 27   expr-6.16 {t1='
4f90: 61 62 63 27 2c 20 74 32 3d 27 61 5b 5e 61 2d 64  abc', t2='a[^a-d
4fa0: 5d 63 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  ]c'} {t1 GLOB t2
4fb0: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
4fc0: 70 72 2d 36 2e 31 37 20 7b 74 31 3d 27 61 62 63  pr-6.17 {t1='abc
4fd0: 27 2c 20 74 32 3d 27 61 5b 41 2d 44 63 5d 63 27  ', t2='a[A-Dc]c'
4fe0: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
4ff0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
5000: 36 2e 31 38 20 7b 74 31 3d 27 61 62 63 27 2c 20  6.18 {t1='abc', 
5010: 74 32 3d 27 61 5b 5e 41 2d 44 63 5d 63 27 7d 20  t2='a[^A-Dc]c'} 
5020: 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74  {t1 GLOB t2} 1.t
5030: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e  est_expr expr-6.
5040: 31 39 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  19 {t1='abc', t2
5050: 3d 27 61 5b 5d 62 5d 63 27 7d 20 7b 74 31 20 47  ='a[]b]c'} {t1 G
5060: 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65  LOB t2} 1.test_e
5070: 78 70 72 20 65 78 70 72 2d 36 2e 32 30 20 7b 74  xpr expr-6.20 {t
5080: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 5b 5e  1='abc', t2='a[^
5090: 5d 62 5d 63 27 7d 20 7b 74 31 20 47 4c 4f 42 20  ]b]c'} {t1 GLOB 
50a0: 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  t2} 0.test_expr 
50b0: 65 78 70 72 2d 36 2e 32 31 61 20 7b 74 31 3d 27  expr-6.21a {t1='
50c0: 61 62 63 64 65 66 67 27 2c 20 74 32 3d 27 61 2a  abcdefg', t2='a*
50d0: 5b 64 65 5d 67 27 7d 20 7b 74 31 20 47 4c 4f 42  [de]g'} {t1 GLOB
50e0: 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72   t2} 0.test_expr
50f0: 20 65 78 70 72 2d 36 2e 32 31 62 20 7b 74 31 3d   expr-6.21b {t1=
5100: 27 61 62 63 64 65 66 67 27 2c 20 74 32 3d 27 61  'abcdefg', t2='a
5110: 2a 5b 64 66 5d 67 27 7d 20 7b 74 31 20 47 4c 4f  *[df]g'} {t1 GLO
5120: 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  B t2} 1.test_exp
5130: 72 20 65 78 70 72 2d 36 2e 32 31 63 20 7b 74 31  r expr-6.21c {t1
5140: 3d 27 61 62 63 64 65 66 67 27 2c 20 74 32 3d 27  ='abcdefg', t2='
5150: 61 2a 5b 64 2d 68 5d 67 27 7d 20 7b 74 31 20 47  a*[d-h]g'} {t1 G
5160: 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65  LOB t2} 1.test_e
5170: 78 70 72 20 65 78 70 72 2d 36 2e 32 31 64 20 7b  xpr expr-6.21d {
5180: 74 31 3d 27 61 62 63 64 65 66 67 27 2c 20 74 32  t1='abcdefg', t2
5190: 3d 27 61 2a 5b 62 2d 65 5d 67 27 7d 20 7b 74 31  ='a*[b-e]g'} {t1
51a0: 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74   GLOB t2} 0.test
51b0: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32 32 61  _expr expr-6.22a
51c0: 20 7b 74 31 3d 27 61 62 63 64 65 66 67 27 2c 20   {t1='abcdefg', 
51d0: 74 32 3d 27 61 2a 5b 5e 64 65 5d 67 27 7d 20 7b  t2='a*[^de]g'} {
51e0: 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65  t1 GLOB t2} 1.te
51f0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32  st_expr expr-6.2
5200: 32 62 20 7b 74 31 3d 27 61 62 63 64 65 66 67 27  2b {t1='abcdefg'
5210: 2c 20 74 32 3d 27 61 2a 5b 5e 64 65 66 5d 67 27  , t2='a*[^def]g'
5220: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
5230: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
5240: 36 2e 32 33 20 7b 74 31 3d 27 61 62 63 64 65 66  6.23 {t1='abcdef
5250: 67 27 2c 20 74 32 3d 27 61 2a 3f 67 27 7d 20 7b  g', t2='a*?g'} {
5260: 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65  t1 GLOB t2} 1.te
5270: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32  st_expr expr-6.2
5280: 34 20 7b 74 31 3d 27 61 63 27 2c 20 74 32 3d 27  4 {t1='ac', t2='
5290: 61 2a 63 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74  a*c'} {t1 GLOB t
52a0: 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65  2} 1.test_expr e
52b0: 78 70 72 2d 36 2e 32 35 20 7b 74 31 3d 27 61 63  xpr-6.25 {t1='ac
52c0: 27 2c 20 74 32 3d 27 61 2a 3f 63 27 7d 20 7b 74  ', t2='a*?c'} {t
52d0: 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73  1 GLOB t2} 0.tes
52e0: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32 36  t_expr expr-6.26
52f0: 20 7b 74 31 3d 27 61 2a 63 27 2c 20 74 32 3d 27   {t1='a*c', t2='
5300: 61 5b 2a 5d 63 27 7d 20 7b 74 31 20 47 4c 4f 42  a[*]c'} {t1 GLOB
5310: 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72   t2} 1.test_expr
5320: 20 65 78 70 72 2d 36 2e 32 37 20 7b 74 31 3d 27   expr-6.27 {t1='
5330: 61 3f 63 27 2c 20 74 32 3d 27 61 5b 3f 5d 63 27  a?c', t2='a[?]c'
5340: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31  } {t1 GLOB t2} 1
5350: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
5360: 36 2e 32 38 20 7b 74 31 3d 27 61 5b 63 27 2c 20  6.28 {t1='a[c', 
5370: 74 32 3d 27 61 5b 5b 5d 63 27 7d 20 7b 74 31 20  t2='a[[]c'} {t1 
5380: 47 4c 4f 42 20 74 32 7d 20 31 0a 0a 0a 23 20 54  GLOB t2} 1...# T
5390: 68 65 73 65 20 74 65 73 74 73 20 6f 6e 6c 79 20  hese tests only 
53a0: 77 6f 72 6b 20 6f 6e 20 76 65 72 73 69 6f 6e 73  work on versions
53b0: 20 6f 66 20 54 43 4c 20 74 68 61 74 20 73 75 70   of TCL that sup
53c0: 70 6f 72 74 20 55 6e 69 63 6f 64 65 0a 23 0a 69  port Unicode.#.i
53d0: 66 20 7b 22 5c 75 31 32 33 34 22 21 3d 22 75 31  f {"\u1234"!="u1
53e0: 32 33 34 22 7d 20 7b 0a 20 20 74 65 73 74 5f 65  234"} {.  test_e
53f0: 78 70 72 20 65 78 70 72 2d 36 2e 32 36 20 22 74  xpr expr-6.26 "t
5400: 31 3d 27 61 5c 75 30 30 38 30 63 27 2c 20 74 32  1='a\u0080c', t2
5410: 3d 27 61 3f 63 27 22 20 7b 74 31 20 47 4c 4f 42  ='a?c'" {t1 GLOB
5420: 20 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78   t2} 1.  test_ex
5430: 70 72 20 65 78 70 72 2d 36 2e 32 37 20 22 74 31  pr expr-6.27 "t1
5440: 3d 27 61 5c 75 30 37 66 66 63 27 2c 20 74 32 3d  ='a\u07ffc', t2=
5450: 27 61 3f 63 27 22 20 7b 74 31 20 47 4c 4f 42 20  'a?c'" {t1 GLOB 
5460: 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70  t2} 1.  test_exp
5470: 72 20 65 78 70 72 2d 36 2e 32 38 20 22 74 31 3d  r expr-6.28 "t1=
5480: 27 61 5c 75 30 38 30 30 63 27 2c 20 74 32 3d 27  'a\u0800c', t2='
5490: 61 3f 63 27 22 20 7b 74 31 20 47 4c 4f 42 20 74  a?c'" {t1 GLOB t
54a0: 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72  2} 1.  test_expr
54b0: 20 65 78 70 72 2d 36 2e 32 39 20 22 74 31 3d 27   expr-6.29 "t1='
54c0: 61 5c 75 66 66 66 66 63 27 2c 20 74 32 3d 27 61  a\uffffc', t2='a
54d0: 3f 63 27 22 20 7b 74 31 20 47 4c 4f 42 20 74 32  ?c'" {t1 GLOB t2
54e0: 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20  } 1.  test_expr 
54f0: 65 78 70 72 2d 36 2e 33 30 20 22 74 31 3d 27 61  expr-6.30 "t1='a
5500: 5c 75 31 32 33 34 27 2c 20 74 32 3d 27 61 3f 27  \u1234', t2='a?'
5510: 22 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31  " {t1 GLOB t2} 1
5520: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
5530: 72 2d 36 2e 33 31 20 22 74 31 3d 27 61 5c 75 31  r-6.31 "t1='a\u1
5540: 32 33 34 27 2c 20 74 32 3d 27 61 3f 3f 27 22 20  234', t2='a??'" 
5550: 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 20  {t1 GLOB t2} 0. 
5560: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
5570: 36 2e 33 32 20 22 74 31 3d 27 61 78 5c 75 31 32  6.32 "t1='ax\u12
5580: 33 34 27 2c 20 74 32 3d 27 61 3f 5c 75 31 32 33  34', t2='a?\u123
5590: 34 27 22 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d  4'" {t1 GLOB t2}
55a0: 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   1.  test_expr e
55b0: 78 70 72 2d 36 2e 33 33 20 22 74 31 3d 27 61 78  xpr-6.33 "t1='ax
55c0: 5c 75 31 32 33 34 27 2c 20 74 32 3d 27 61 2a 5c  \u1234', t2='a*\
55d0: 75 31 32 33 34 27 22 20 7b 74 31 20 47 4c 4f 42  u1234'" {t1 GLOB
55e0: 20 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78   t2} 1.  test_ex
55f0: 70 72 20 65 78 70 72 2d 36 2e 33 34 20 22 74 31  pr expr-6.34 "t1
5600: 3d 27 61 78 5c 75 31 32 33 34 79 5c 75 31 32 33  ='ax\u1234y\u123
5610: 34 27 2c 20 74 32 3d 27 61 2a 5c 75 31 32 33 34  4', t2='a*\u1234
5620: 27 22 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20  '" {t1 GLOB t2} 
5630: 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78  1.  test_expr ex
5640: 70 72 2d 36 2e 33 35 20 22 74 31 3d 27 61 5c 75  pr-6.35 "t1='a\u
5650: 31 32 33 34 62 27 2c 20 74 32 3d 27 61 5c 5b 78  1234b', t2='a\[x
5660: 5c 75 31 32 33 34 79 5c 5d 62 27 22 20 7b 74 31  \u1234y\]b'" {t1
5670: 20 47 4c 4f 42 20 74 32 7d 20 31 0a 20 20 74 65   GLOB t2} 1.  te
5680: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 33  st_expr expr-6.3
5690: 36 20 22 74 31 3d 27 61 5c 75 31 32 33 34 62 27  6 "t1='a\u1234b'
56a0: 2c 20 74 32 3d 27 61 5c 5b 5c 75 31 32 33 33 2d  , t2='a\[\u1233-
56b0: 5c 75 31 32 33 35 5c 5d 62 27 22 20 7b 74 31 20  \u1235\]b'" {t1 
56c0: 47 4c 4f 42 20 74 32 7d 20 31 0a 20 20 74 65 73  GLOB t2} 1.  tes
56d0: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 33 37  t_expr expr-6.37
56e0: 20 22 74 31 3d 27 61 5c 75 31 32 33 34 62 27 2c   "t1='a\u1234b',
56f0: 20 74 32 3d 27 61 5c 5b 5c 75 31 32 33 34 2d 5c   t2='a\[\u1234-\
5700: 75 31 32 34 66 5c 5d 62 27 22 20 7b 74 31 20 47  u124f\]b'" {t1 G
5710: 4c 4f 42 20 74 32 7d 20 31 0a 20 20 74 65 73 74  LOB t2} 1.  test
5720: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 33 38 20  _expr expr-6.38 
5730: 22 74 31 3d 27 61 5c 75 31 32 33 34 62 27 2c 20  "t1='a\u1234b', 
5740: 74 32 3d 27 61 5c 5b 5c 75 31 32 33 35 2d 5c 75  t2='a\[\u1235-\u
5750: 31 32 34 66 5c 5d 62 27 22 20 7b 74 31 20 47 4c  124f\]b'" {t1 GL
5760: 4f 42 20 74 32 7d 20 30 0a 20 20 74 65 73 74 5f  OB t2} 0.  test_
5770: 65 78 70 72 20 65 78 70 72 2d 36 2e 33 39 20 22  expr expr-6.39 "
5780: 74 31 3d 27 61 5c 75 31 32 33 34 62 27 2c 20 74  t1='a\u1234b', t
5790: 32 3d 27 61 5c 5b 61 2d 5c 75 31 32 33 35 5c 5d  2='a\[a-\u1235\]
57a0: 62 27 22 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d  b'" {t1 GLOB t2}
57b0: 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   1.  test_expr e
57c0: 78 70 72 2d 36 2e 34 30 20 22 74 31 3d 27 61 5c  xpr-6.40 "t1='a\
57d0: 75 31 32 33 34 62 27 2c 20 74 32 3d 27 61 5c 5b  u1234b', t2='a\[
57e0: 61 2d 5c 75 31 32 33 34 5c 5d 62 27 22 20 7b 74  a-\u1234\]b'" {t
57f0: 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 20 20 74  1 GLOB t2} 1.  t
5800: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e  est_expr expr-6.
5810: 34 31 20 22 74 31 3d 27 61 5c 75 31 32 33 34 62  41 "t1='a\u1234b
5820: 27 2c 20 74 32 3d 27 61 5c 5b 61 2d 5c 75 31 32  ', t2='a\[a-\u12
5830: 33 33 5c 5d 62 27 22 20 7b 74 31 20 47 4c 4f 42  33\]b'" {t1 GLOB
5840: 20 74 32 7d 20 30 0a 7d 0a 0a 74 65 73 74 5f 65   t2} 0.}..test_e
5850: 78 70 72 20 65 78 70 72 2d 36 2e 35 31 20 7b 74  xpr expr-6.51 {t
5860: 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 78 79 7a  1='ABC', t2='xyz
5870: 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20  '} {t1 GLOB t2} 
5880: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
5890: 2d 36 2e 35 32 20 7b 74 31 3d 27 41 42 43 27 2c  -6.52 {t1='ABC',
58a0: 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 20 47   t2='abc'} {t1 G
58b0: 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  LOB t2} 0.test_e
58c0: 78 70 72 20 65 78 70 72 2d 36 2e 35 33 20 7b 74  xpr expr-6.53 {t
58d0: 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 61 3f 63  1='ABC', t2='a?c
58e0: 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20  '} {t1 GLOB t2} 
58f0: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
5900: 2d 36 2e 35 34 20 7b 74 31 3d 27 41 42 43 27 2c  -6.54 {t1='ABC',
5910: 20 74 32 3d 27 41 3f 43 27 7d 20 7b 74 31 20 47   t2='A?C'} {t1 G
5920: 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65  LOB t2} 1.test_e
5930: 78 70 72 20 65 78 70 72 2d 36 2e 35 35 20 7b 74  xpr expr-6.55 {t
5940: 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 61 62 63  1='ABC', t2='abc
5950: 3f 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d  ?'} {t1 GLOB t2}
5960: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
5970: 72 2d 36 2e 35 36 20 7b 74 31 3d 27 41 42 43 27  r-6.56 {t1='ABC'
5980: 2c 20 74 32 3d 27 61 2a 63 27 7d 20 7b 74 31 20  , t2='a*c'} {t1 
5990: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
59a0: 65 78 70 72 20 65 78 70 72 2d 36 2e 35 37 20 7b  expr expr-6.57 {
59b0: 74 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 41 2a  t1='ABC', t2='A*
59c0: 43 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d  C'} {t1 GLOB t2}
59d0: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
59e0: 72 2d 36 2e 35 38 20 7b 74 31 3d 27 41 42 78 79  r-6.58 {t1='ABxy
59f0: 7a 7a 79 43 27 2c 20 74 32 3d 27 41 2a 43 27 7d  zzyC', t2='A*C'}
5a00: 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a   {t1 GLOB t2} 1.
5a10: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36  test_expr expr-6
5a20: 2e 35 39 20 7b 74 31 3d 27 41 42 78 79 7a 7a 79  .59 {t1='ABxyzzy
5a30: 27 2c 20 74 32 3d 27 41 2a 43 27 7d 20 7b 74 31  ', t2='A*C'} {t1
5a40: 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74   GLOB t2} 0.test
5a50: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 30 20  _expr expr-6.60 
5a60: 7b 74 31 3d 27 41 42 78 79 7a 7a 79 43 78 27 2c  {t1='ABxyzzyCx',
5a70: 20 74 32 3d 27 41 2a 43 27 7d 20 7b 74 31 20 47   t2='A*C'} {t1 G
5a80: 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  LOB t2} 0.test_e
5a90: 78 70 72 20 65 78 70 72 2d 36 2e 36 31 20 7b 74  xpr expr-6.61 {t
5aa0: 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 78 79 7a  1='ABC', t2='xyz
5ab0: 27 7d 20 7b 74 31 20 4e 4f 54 20 47 4c 4f 42 20  '} {t1 NOT GLOB 
5ac0: 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  t2} 1.test_expr 
5ad0: 65 78 70 72 2d 36 2e 36 32 20 7b 74 31 3d 27 41  expr-6.62 {t1='A
5ae0: 42 43 27 2c 20 74 32 3d 27 41 42 43 27 7d 20 7b  BC', t2='ABC'} {
5af0: 74 31 20 4e 4f 54 20 47 4c 4f 42 20 74 32 7d 20  t1 NOT GLOB t2} 
5b00: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
5b10: 2d 36 2e 36 33 20 7b 74 31 3d 27 41 42 43 27 2c  -6.63 {t1='ABC',
5b20: 20 74 32 3d 27 41 5b 42 78 5d 43 27 7d 20 7b 74   t2='A[Bx]C'} {t
5b30: 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73  1 GLOB t2} 1.tes
5b40: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 34  t_expr expr-6.64
5b50: 20 7b 74 31 3d 27 41 42 43 27 2c 20 74 32 3d 27   {t1='ABC', t2='
5b60: 41 5b 43 78 5d 43 27 7d 20 7b 74 31 20 47 4c 4f  A[Cx]C'} {t1 GLO
5b70: 42 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70  B t2} 0.test_exp
5b80: 72 20 65 78 70 72 2d 36 2e 36 35 20 7b 74 31 3d  r expr-6.65 {t1=
5b90: 27 41 42 43 27 2c 20 74 32 3d 27 41 5b 41 2d 44  'ABC', t2='A[A-D
5ba0: 5d 43 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  ]C'} {t1 GLOB t2
5bb0: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
5bc0: 70 72 2d 36 2e 36 36 20 7b 74 31 3d 27 41 42 43  pr-6.66 {t1='ABC
5bd0: 27 2c 20 74 32 3d 27 41 5b 5e 41 2d 44 5d 43 27  ', t2='A[^A-D]C'
5be0: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
5bf0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
5c00: 36 2e 36 37 20 7b 74 31 3d 27 41 42 43 27 2c 20  6.67 {t1='ABC', 
5c10: 74 32 3d 27 41 5b 61 2d 64 43 5d 43 27 7d 20 7b  t2='A[a-dC]C'} {
5c20: 74 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65  t1 GLOB t2} 0.te
5c30: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36  st_expr expr-6.6
5c40: 38 20 7b 74 31 3d 27 41 42 43 27 2c 20 74 32 3d  8 {t1='ABC', t2=
5c50: 27 41 5b 5e 61 2d 64 43 5d 43 27 7d 20 7b 74 31  'A[^a-dC]C'} {t1
5c60: 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74   GLOB t2} 1.test
5c70: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 39 61  _expr expr-6.69a
5c80: 20 7b 74 31 3d 27 41 42 43 27 2c 20 74 32 3d 27   {t1='ABC', t2='
5c90: 41 5b 5d 42 5d 43 27 7d 20 7b 74 31 20 47 4c 4f  A[]B]C'} {t1 GLO
5ca0: 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  B t2} 1.test_exp
5cb0: 72 20 65 78 70 72 2d 36 2e 36 39 62 20 7b 74 31  r expr-6.69b {t1
5cc0: 3d 27 41 5d 43 27 2c 20 74 32 3d 27 41 5b 5d 42  ='A]C', t2='A[]B
5cd0: 5d 43 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  ]C'} {t1 GLOB t2
5ce0: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
5cf0: 70 72 2d 36 2e 37 30 61 20 7b 74 31 3d 27 41 42  pr-6.70a {t1='AB
5d00: 43 27 2c 20 74 32 3d 27 41 5b 5e 5d 42 5d 43 27  C', t2='A[^]B]C'
5d10: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
5d20: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
5d30: 36 2e 37 30 62 20 7b 74 31 3d 27 41 78 43 27 2c  6.70b {t1='AxC',
5d40: 20 74 32 3d 27 41 5b 5e 5d 42 5d 43 27 7d 20 7b   t2='A[^]B]C'} {
5d50: 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65  t1 GLOB t2} 1.te
5d60: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 37  st_expr expr-6.7
5d70: 30 63 20 7b 74 31 3d 27 41 5d 43 27 2c 20 74 32  0c {t1='A]C', t2
5d80: 3d 27 41 5b 5e 5d 42 5d 43 27 7d 20 7b 74 31 20  ='A[^]B]C'} {t1 
5d90: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
5da0: 65 78 70 72 20 65 78 70 72 2d 36 2e 37 31 20 7b  expr expr-6.71 {
5db0: 74 31 3d 27 41 42 43 44 45 46 47 27 2c 20 74 32  t1='ABCDEFG', t2
5dc0: 3d 27 41 2a 5b 44 45 5d 47 27 7d 20 7b 74 31 20  ='A*[DE]G'} {t1 
5dd0: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
5de0: 65 78 70 72 20 65 78 70 72 2d 36 2e 37 32 20 7b  expr expr-6.72 {
5df0: 74 31 3d 27 41 42 43 44 45 46 47 27 2c 20 74 32  t1='ABCDEFG', t2
5e00: 3d 27 41 2a 5b 5e 44 45 5d 47 27 7d 20 7b 74 31  ='A*[^DE]G'} {t1
5e10: 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74   GLOB t2} 1.test
5e20: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 37 33 20  _expr expr-6.73 
5e30: 7b 74 31 3d 27 41 42 43 44 45 46 47 27 2c 20 74  {t1='ABCDEFG', t
5e40: 32 3d 27 41 2a 3f 47 27 7d 20 7b 74 31 20 47 4c  2='A*?G'} {t1 GL
5e50: 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78  OB t2} 1.test_ex
5e60: 70 72 20 65 78 70 72 2d 36 2e 37 34 20 7b 74 31  pr expr-6.74 {t1
5e70: 3d 27 41 43 27 2c 20 74 32 3d 27 41 2a 43 27 7d  ='AC', t2='A*C'}
5e80: 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a   {t1 GLOB t2} 1.
5e90: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36  test_expr expr-6
5ea0: 2e 37 35 20 7b 74 31 3d 27 41 43 27 2c 20 74 32  .75 {t1='AC', t2
5eb0: 3d 27 41 2a 3f 43 27 7d 20 7b 74 31 20 47 4c 4f  ='A*?C'} {t1 GLO
5ec0: 42 20 74 32 7d 20 30 0a 0a 74 65 73 74 5f 65 78  B t2} 0..test_ex
5ed0: 70 72 20 65 78 70 72 2d 36 2e 36 33 20 7b 74 31  pr expr-6.63 {t1
5ee0: 3d 4e 55 4c 4c 2c 20 74 32 3d 27 61 2a 3f 63 27  =NULL, t2='a*?c'
5ef0: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 7b  } {t1 GLOB t2} {
5f00: 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78  {}}.test_expr ex
5f10: 70 72 2d 36 2e 36 34 20 7b 74 31 3d 27 61 63 27  pr-6.64 {t1='ac'
5f20: 2c 20 74 32 3d 4e 55 4c 4c 7d 20 7b 74 31 20 47  , t2=NULL} {t1 G
5f30: 4c 4f 42 20 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73  LOB t2} {{}}.tes
5f40: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 35  t_expr expr-6.65
5f50: 20 7b 74 31 3d 4e 55 4c 4c 2c 20 74 32 3d 27 61   {t1=NULL, t2='a
5f60: 2a 3f 63 27 7d 20 7b 74 31 20 4e 4f 54 20 47 4c  *?c'} {t1 NOT GL
5f70: 4f 42 20 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74  OB t2} {{}}.test
5f80: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 36 20  _expr expr-6.66 
5f90: 7b 74 31 3d 27 61 63 27 2c 20 74 32 3d 4e 55 4c  {t1='ac', t2=NUL
5fa0: 4c 7d 20 7b 74 31 20 4e 4f 54 20 47 4c 4f 42 20  L} {t1 NOT GLOB 
5fb0: 74 32 7d 20 7b 7b 7d 7d 0a 0a 23 20 43 68 65 63  t2} {{}}..# Chec
5fc0: 6b 20 74 68 61 74 20 74 68 65 20 61 66 66 69 6e  k that the affin
5fd0: 69 74 79 20 6f 66 20 61 20 43 41 53 54 20 65 78  ity of a CAST ex
5fe0: 70 72 65 73 73 69 6f 6e 20 69 73 20 63 61 6c 63  pression is calc
5ff0: 75 6c 61 74 65 64 20 63 6f 72 72 65 63 74 6c 79  ulated correctly
6000: 2e 0a 69 66 63 61 70 61 62 6c 65 20 63 61 73 74  ..ifcapable cast
6010: 20 7b 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   {.  test_expr e
6020: 78 70 72 2d 36 2e 36 37 20 7b 74 31 3d 27 30 31  xpr-6.67 {t1='01
6030: 27 2c 20 74 32 3d 31 7d 20 7b 74 31 20 3d 20 74  ', t2=1} {t1 = t
6040: 32 7d 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72  2} 0.  test_expr
6050: 20 65 78 70 72 2d 36 2e 36 38 20 7b 74 31 3d 27   expr-6.68 {t1='
6060: 31 27 2c 20 74 32 3d 31 7d 20 7b 74 31 20 3d 20  1', t2=1} {t1 = 
6070: 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70  t2} 1.  test_exp
6080: 72 20 65 78 70 72 2d 36 2e 36 39 20 7b 74 31 3d  r expr-6.69 {t1=
6090: 27 30 31 27 2c 20 74 32 3d 31 7d 20 7b 43 41 53  '01', t2=1} {CAS
60a0: 54 28 74 31 20 41 53 20 49 4e 54 45 47 45 52 29  T(t1 AS INTEGER)
60b0: 20 3d 20 74 32 7d 20 31 0a 7d 0a 0a 74 65 73 74   = t2} 1.}..test
60c0: 5f 65 78 70 72 20 65 78 70 72 2d 63 61 73 65 2e  _expr expr-case.
60d0: 31 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20 5c  1 {i1=1, i2=2} \
60e0: 0a 09 7b 43 41 53 45 20 57 48 45 4e 20 69 31 20  ..{CASE WHEN i1 
60f0: 3d 20 69 32 20 54 48 45 4e 20 27 65 71 27 20 45  = i2 THEN 'eq' E
6100: 4c 53 45 20 27 6e 65 27 20 45 4e 44 7d 20 6e 65  LSE 'ne' END} ne
6110: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
6120: 63 61 73 65 2e 32 20 7b 69 31 3d 32 2c 20 69 32  case.2 {i1=2, i2
6130: 3d 32 7d 20 5c 0a 09 7b 43 41 53 45 20 57 48 45  =2} \..{CASE WHE
6140: 4e 20 69 31 20 3d 20 69 32 20 54 48 45 4e 20 27  N i1 = i2 THEN '
6150: 65 71 27 20 45 4c 53 45 20 27 6e 65 27 20 45 4e  eq' ELSE 'ne' EN
6160: 44 7d 20 65 71 0a 74 65 73 74 5f 65 78 70 72 20  D} eq.test_expr 
6170: 65 78 70 72 2d 63 61 73 65 2e 33 20 7b 69 31 3d  expr-case.3 {i1=
6180: 4e 55 4c 4c 2c 20 69 32 3d 32 7d 20 5c 0a 09 7b  NULL, i2=2} \..{
6190: 43 41 53 45 20 57 48 45 4e 20 69 31 20 3d 20 69  CASE WHEN i1 = i
61a0: 32 20 54 48 45 4e 20 27 65 71 27 20 45 4c 53 45  2 THEN 'eq' ELSE
61b0: 20 27 6e 65 27 20 45 4e 44 7d 20 6e 65 0a 74 65   'ne' END} ne.te
61c0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 63 61 73  st_expr expr-cas
61d0: 65 2e 34 20 7b 69 31 3d 32 2c 20 69 32 3d 4e 55  e.4 {i1=2, i2=NU
61e0: 4c 4c 7d 20 5c 0a 09 7b 43 41 53 45 20 57 48 45  LL} \..{CASE WHE
61f0: 4e 20 69 31 20 3d 20 69 32 20 54 48 45 4e 20 27  N i1 = i2 THEN '
6200: 65 71 27 20 45 4c 53 45 20 27 6e 65 27 20 45 4e  eq' ELSE 'ne' EN
6210: 44 7d 20 6e 65 0a 74 65 73 74 5f 65 78 70 72 20  D} ne.test_expr 
6220: 65 78 70 72 2d 63 61 73 65 2e 35 20 7b 69 31 3d  expr-case.5 {i1=
6230: 32 7d 20 5c 0a 09 7b 43 41 53 45 20 69 31 20 57  2} \..{CASE i1 W
6240: 48 45 4e 20 31 20 54 48 45 4e 20 27 6f 6e 65 27  HEN 1 THEN 'one'
6250: 20 57 48 45 4e 20 32 20 54 48 45 4e 20 27 74 77   WHEN 2 THEN 'tw
6260: 6f 27 20 45 4c 53 45 20 27 65 72 72 6f 72 27 20  o' ELSE 'error' 
6270: 45 4e 44 7d 20 74 77 6f 0a 74 65 73 74 5f 65 78  END} two.test_ex
6280: 70 72 20 65 78 70 72 2d 63 61 73 65 2e 36 20 7b  pr expr-case.6 {
6290: 69 31 3d 31 7d 20 5c 0a 09 7b 43 41 53 45 20 69  i1=1} \..{CASE i
62a0: 31 20 57 48 45 4e 20 31 20 54 48 45 4e 20 27 6f  1 WHEN 1 THEN 'o
62b0: 6e 65 27 20 57 48 45 4e 20 4e 55 4c 4c 20 54 48  ne' WHEN NULL TH
62c0: 45 4e 20 27 74 77 6f 27 20 45 4c 53 45 20 27 65  EN 'two' ELSE 'e
62d0: 72 72 6f 72 27 20 45 4e 44 7d 20 6f 6e 65 0a 74  rror' END} one.t
62e0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 63 61  est_expr expr-ca
62f0: 73 65 2e 37 20 7b 69 31 3d 32 7d 20 5c 0a 09 7b  se.7 {i1=2} \..{
6300: 43 41 53 45 20 69 31 20 57 48 45 4e 20 31 20 54  CASE i1 WHEN 1 T
6310: 48 45 4e 20 27 6f 6e 65 27 20 57 48 45 4e 20 4e  HEN 'one' WHEN N
6320: 55 4c 4c 20 54 48 45 4e 20 27 74 77 6f 27 20 45  ULL THEN 'two' E
6330: 4c 53 45 20 27 65 72 72 6f 72 27 20 45 4e 44 7d  LSE 'error' END}
6340: 20 65 72 72 6f 72 0a 74 65 73 74 5f 65 78 70 72   error.test_expr
6350: 20 65 78 70 72 2d 63 61 73 65 2e 38 20 7b 69 31   expr-case.8 {i1
6360: 3d 33 7d 20 5c 0a 09 7b 43 41 53 45 20 69 31 20  =3} \..{CASE i1 
6370: 57 48 45 4e 20 31 20 54 48 45 4e 20 27 6f 6e 65  WHEN 1 THEN 'one
6380: 27 20 57 48 45 4e 20 4e 55 4c 4c 20 54 48 45 4e  ' WHEN NULL THEN
6390: 20 27 74 77 6f 27 20 45 4c 53 45 20 27 65 72 72   'two' ELSE 'err
63a0: 6f 72 27 20 45 4e 44 7d 20 65 72 72 6f 72 0a 74  or' END} error.t
63b0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 63 61  est_expr expr-ca
63c0: 73 65 2e 39 20 7b 69 31 3d 33 7d 20 5c 0a 09 7b  se.9 {i1=3} \..{
63d0: 43 41 53 45 20 69 31 20 57 48 45 4e 20 31 20 54  CASE i1 WHEN 1 T
63e0: 48 45 4e 20 27 6f 6e 65 27 20 57 48 45 4e 20 32  HEN 'one' WHEN 2
63f0: 20 54 48 45 4e 20 27 74 77 6f 27 20 45 4c 53 45   THEN 'two' ELSE
6400: 20 27 65 72 72 6f 72 27 20 45 4e 44 7d 20 65 72   'error' END} er
6410: 72 6f 72 0a 74 65 73 74 5f 65 78 70 72 20 65 78  ror.test_expr ex
6420: 70 72 2d 63 61 73 65 2e 31 30 20 7b 69 31 3d 33  pr-case.10 {i1=3
6430: 7d 20 5c 0a 09 7b 43 41 53 45 20 69 31 20 57 48  } \..{CASE i1 WH
6440: 45 4e 20 31 20 54 48 45 4e 20 27 6f 6e 65 27 20  EN 1 THEN 'one' 
6450: 57 48 45 4e 20 32 20 54 48 45 4e 20 27 74 77 6f  WHEN 2 THEN 'two
6460: 27 20 45 4e 44 7d 20 7b 7b 7d 7d 0a 74 65 73 74  ' END} {{}}.test
6470: 5f 65 78 70 72 20 65 78 70 72 2d 63 61 73 65 2e  _expr expr-case.
6480: 31 31 20 7b 69 31 3d 6e 75 6c 6c 7d 20 5c 0a 09  11 {i1=null} \..
6490: 7b 43 41 53 45 20 69 31 20 57 48 45 4e 20 31 20  {CASE i1 WHEN 1 
64a0: 54 48 45 4e 20 27 6f 6e 65 27 20 57 48 45 4e 20  THEN 'one' WHEN 
64b0: 32 20 54 48 45 4e 20 27 74 77 6f 27 20 45 4c 53  2 THEN 'two' ELS
64c0: 45 20 33 20 45 4e 44 7d 20 33 0a 74 65 73 74 5f  E 3 END} 3.test_
64d0: 65 78 70 72 20 65 78 70 72 2d 63 61 73 65 2e 31  expr expr-case.1
64e0: 32 20 7b 69 31 3d 31 7d 20 5c 0a 09 7b 43 41 53  2 {i1=1} \..{CAS
64f0: 45 20 69 31 20 57 48 45 4e 20 31 20 54 48 45 4e  E i1 WHEN 1 THEN
6500: 20 6e 75 6c 6c 20 57 48 45 4e 20 32 20 54 48 45   null WHEN 2 THE
6510: 4e 20 27 74 77 6f 27 20 45 4c 53 45 20 33 20 45  N 'two' ELSE 3 E
6520: 4e 44 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78  ND} {{}}.test_ex
6530: 70 72 20 65 78 70 72 2d 63 61 73 65 2e 31 33 20  pr expr-case.13 
6540: 7b 69 31 3d 37 7d 20 5c 0a 09 7b 20 43 41 53 45  {i1=7} \..{ CASE
6550: 20 57 48 45 4e 20 69 31 20 3c 20 35 20 54 48 45   WHEN i1 < 5 THE
6560: 4e 20 27 6c 6f 77 27 20 0a 09 20 20 20 20 20 20  N 'low' ..      
6570: 20 57 48 45 4e 20 69 31 20 3c 20 31 30 20 54 48   WHEN i1 < 10 TH
6580: 45 4e 20 27 6d 65 64 69 75 6d 27 20 0a 20 20 20  EN 'medium' .   
6590: 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e              WHEN
65a0: 20 69 31 20 3c 20 31 35 20 54 48 45 4e 20 27 68   i1 < 15 THEN 'h
65b0: 69 67 68 27 20 45 4c 53 45 20 27 65 72 72 6f 72  igh' ELSE 'error
65c0: 27 20 45 4e 44 7d 20 6d 65 64 69 75 6d 0a 0a 0a  ' END} medium...
65d0: 23 20 54 68 65 20 73 71 6c 69 74 65 45 78 70 72  # The sqliteExpr
65e0: 49 66 46 61 6c 73 65 20 61 6e 64 20 73 71 6c 69  IfFalse and sqli
65f0: 74 65 45 78 70 72 49 66 54 72 75 65 20 72 6f 75  teExprIfTrue rou
6600: 74 69 6e 65 73 20 61 72 65 20 6f 6e 6c 79 0a 23  tines are only.#
6610: 20 65 78 65 63 75 74 65 64 20 61 73 20 70 61 72   executed as par
6620: 74 20 6f 66 20 61 20 57 48 45 52 45 20 63 6c 61  t of a WHERE cla
6630: 75 73 65 2e 20 20 43 72 65 61 74 65 20 61 20 74  use.  Create a t
6640: 61 62 6c 65 20 73 75 69 74 61 62 6c 65 0a 23 20  able suitable.# 
6650: 66 6f 72 20 74 65 73 74 69 6e 67 20 74 68 65 73  for testing thes
6660: 65 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 23 0a 65  e functions..#.e
6670: 78 65 63 73 71 6c 20 7b 44 52 4f 50 20 54 41 42  xecsql {DROP TAB
6680: 4c 45 20 74 65 73 74 31 7d 0a 65 78 65 63 73 71  LE test1}.execsq
6690: 6c 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 20  l {CREATE TABLE 
66a0: 74 65 73 74 31 28 61 20 69 6e 74 2c 20 62 20 69  test1(a int, b i
66b0: 6e 74 29 3b 7d 0a 66 6f 72 20 7b 73 65 74 20 69  nt);}.for {set i
66c0: 20 31 7d 20 7b 24 69 3c 3d 32 30 7d 20 7b 69 6e   1} {$i<=20} {in
66d0: 63 72 20 69 7d 20 7b 0a 20 20 65 78 65 63 73 71  cr i} {.  execsq
66e0: 6c 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  l "INSERT INTO t
66f0: 65 73 74 31 20 56 41 4c 55 45 53 28 24 69 2c 5b  est1 VALUES($i,[
6700: 65 78 70 72 20 7b 69 6e 74 28 70 6f 77 28 32 2c  expr {int(pow(2,
6710: 24 69 29 29 7d 5d 29 22 0a 7d 0a 65 78 65 63 73  $i))}])".}.execs
6720: 71 6c 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20  ql "INSERT INTO 
6730: 74 65 73 74 31 20 56 41 4c 55 45 53 28 4e 55 4c  test1 VALUES(NUL
6740: 4c 2c 30 29 22 0a 64 6f 5f 74 65 73 74 20 65 78  L,0)".do_test ex
6750: 70 72 2d 37 2e 31 20 7b 0a 20 20 65 78 65 63 73  pr-7.1 {.  execs
6760: 71 6c 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f  ql {SELECT * FRO
6770: 4d 20 74 65 73 74 31 20 4f 52 44 45 52 20 42 59  M test1 ORDER BY
6780: 20 61 7d 0a 7d 20 7b 7b 7d 20 30 20 31 20 32 20   a}.} {{} 0 1 2 
6790: 32 20 34 20 33 20 38 20 34 20 31 36 20 35 20 33  2 4 3 8 4 16 5 3
67a0: 32 20 36 20 36 34 20 37 20 31 32 38 20 38 20 32  2 6 64 7 128 8 2
67b0: 35 36 20 39 20 35 31 32 20 31 30 20 31 30 32 34  56 9 512 10 1024
67c0: 20 31 31 20 32 30 34 38 20 31 32 20 34 30 39 36   11 2048 12 4096
67d0: 20 31 33 20 38 31 39 32 20 31 34 20 31 36 33 38   13 8192 14 1638
67e0: 34 20 31 35 20 33 32 37 36 38 20 31 36 20 36 35  4 15 32768 16 65
67f0: 35 33 36 20 31 37 20 31 33 31 30 37 32 20 31 38  536 17 131072 18
6800: 20 32 36 32 31 34 34 20 31 39 20 35 32 34 32 38   262144 19 52428
6810: 38 20 32 30 20 31 30 34 38 35 37 36 7d 0a 0a 70  8 20 1048576}..p
6820: 72 6f 63 20 74 65 73 74 5f 65 78 70 72 32 20 7b  roc test_expr2 {
6830: 6e 61 6d 65 20 65 78 70 72 20 72 65 73 75 6c 74  name expr result
6840: 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 24 6e  } {.  do_test $n
6850: 61 6d 65 20 5b 66 6f 72 6d 61 74 20 7b 0a 20 20  ame [format {.  
6860: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
6870: 54 20 61 20 46 52 4f 4d 20 74 65 73 74 31 20 57  T a FROM test1 W
6880: 48 45 52 45 20 25 73 20 4f 52 44 45 52 20 42 59  HERE %s ORDER BY
6890: 20 61 7d 0a 20 20 7d 20 24 65 78 70 72 5d 20 24   a}.  } $expr] $
68a0: 72 65 73 75 6c 74 0a 7d 0a 0a 74 65 73 74 5f 65  result.}..test_e
68b0: 78 70 72 32 20 65 78 70 72 2d 37 2e 32 20 20 7b  xpr2 expr-7.2  {
68c0: 61 3c 31 30 20 41 4e 44 20 61 3e 38 7d 20 20 20  a<10 AND a>8}   
68d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
68e0: 39 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  9}.test_expr2 ex
68f0: 70 72 2d 37 2e 33 20 20 7b 61 3c 3d 31 30 20 41  pr-7.3  {a<=10 A
6900: 4e 44 20 61 3e 3d 38 7d 20 20 20 20 20 20 20 20  ND a>=8}        
6910: 20 20 20 20 20 20 20 20 7b 38 20 39 20 31 30 7d          {8 9 10}
6920: 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72  .test_expr2 expr
6930: 2d 37 2e 34 20 20 7b 61 3e 3d 38 20 41 4e 44 20  -7.4  {a>=8 AND 
6940: 61 3c 3d 31 30 7d 20 20 20 20 20 20 20 20 20 20  a<=10}          
6950: 20 20 20 20 20 20 7b 38 20 39 20 31 30 7d 0a 74        {8 9 10}.t
6960: 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37  est_expr2 expr-7
6970: 2e 35 20 20 7b 61 3e 3d 32 30 20 4f 52 20 61 3c  .5  {a>=20 OR a<
6980: 3d 31 7d 20 20 20 20 20 20 20 20 20 20 20 20 20  =1}             
6990: 20 20 20 20 7b 31 20 32 30 7d 0a 74 65 73 74 5f      {1 20}.test_
69a0: 65 78 70 72 32 20 65 78 70 72 2d 37 2e 36 20 20  expr2 expr-7.6  
69b0: 7b 62 21 3d 34 20 41 4e 44 20 61 3c 3d 33 7d 20  {b!=4 AND a<=3} 
69c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69d0: 7b 31 20 33 7d 0a 74 65 73 74 5f 65 78 70 72 32  {1 3}.test_expr2
69e0: 20 65 78 70 72 2d 37 2e 37 20 20 7b 62 3d 3d 38   expr-7.7  {b==8
69f0: 20 4f 52 20 62 3d 3d 31 36 20 4f 52 20 62 3d 3d   OR b==16 OR b==
6a00: 33 32 7d 20 20 20 20 20 20 20 20 7b 33 20 34 20  32}        {3 4 
6a10: 35 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  5}.test_expr2 ex
6a20: 70 72 2d 37 2e 38 20 20 7b 4e 4f 54 20 62 3c 3e  pr-7.8  {NOT b<>
6a30: 38 20 4f 52 20 62 3d 3d 31 30 32 34 7d 20 20 20  8 OR b==1024}   
6a40: 20 20 20 20 20 20 20 20 7b 33 20 31 30 7d 0a 74          {3 10}.t
6a50: 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37  est_expr2 expr-7
6a60: 2e 39 20 20 7b 62 20 4c 49 4b 45 20 27 31 30 25  .9  {b LIKE '10%
6a70: 27 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  '}              
6a80: 20 20 20 20 7b 31 30 20 32 30 7d 0a 74 65 73 74      {10 20}.test
6a90: 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 31 30  _expr2 expr-7.10
6aa0: 20 7b 62 20 4c 49 4b 45 20 27 5f 34 27 7d 20 20   {b LIKE '_4'}  
6ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ac0: 20 7b 36 7d 0a 74 65 73 74 5f 65 78 70 72 32 20   {6}.test_expr2 
6ad0: 65 78 70 72 2d 37 2e 31 31 20 7b 61 20 47 4c 4f  expr-7.11 {a GLO
6ae0: 42 20 27 31 3f 27 7d 20 20 20 20 20 20 20 20 20  B '1?'}         
6af0: 20 20 20 7b 31 30 20 31 31 20 31 32 20 31 33 20     {10 11 12 13 
6b00: 31 34 20 31 35 20 31 36 20 31 37 20 31 38 20 31  14 15 16 17 18 1
6b10: 39 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  9}.test_expr2 ex
6b20: 70 72 2d 37 2e 31 32 20 7b 62 20 47 4c 4f 42 20  pr-7.12 {b GLOB 
6b30: 27 31 2a 34 27 7d 20 20 20 20 20 20 20 20 20 20  '1*4'}          
6b40: 20 20 20 20 20 20 20 20 7b 31 30 20 31 34 7d 0a          {10 14}.
6b50: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
6b60: 37 2e 31 33 20 7b 62 20 47 4c 4f 42 20 27 2a 31  7.13 {b GLOB '*1
6b70: 5b 34 35 36 5d 27 7d 20 20 20 20 20 20 20 20 20  [456]'}         
6b80: 20 20 20 20 20 7b 34 7d 0a 74 65 73 74 5f 65 78       {4}.test_ex
6b90: 70 72 32 20 65 78 70 72 2d 37 2e 31 34 20 7b 61  pr2 expr-7.14 {a
6ba0: 20 49 53 4e 55 4c 4c 7d 20 20 20 20 20 20 20 20   ISNULL}        
6bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 7b                {{
6bc0: 7d 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  }}.test_expr2 ex
6bd0: 70 72 2d 37 2e 31 35 20 7b 61 20 4e 4f 54 4e 55  pr-7.15 {a NOTNU
6be0: 4c 4c 20 41 4e 44 20 61 3c 33 7d 20 20 20 20 20  LL AND a<3}     
6bf0: 20 20 20 20 20 20 20 20 7b 31 20 32 7d 0a 74 65          {1 2}.te
6c00: 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e  st_expr2 expr-7.
6c10: 31 36 20 7b 61 20 41 4e 44 20 61 3c 33 7d 20 20  16 {a AND a<3}  
6c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c30: 20 20 20 7b 31 20 32 7d 0a 74 65 73 74 5f 65 78     {1 2}.test_ex
6c40: 70 72 32 20 65 78 70 72 2d 37 2e 31 37 20 7b 4e  pr2 expr-7.17 {N
6c50: 4f 54 20 61 7d 20 20 20 20 20 20 20 20 20 20 20  OT a}           
6c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 7d                {}
6c70: 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72  .test_expr2 expr
6c80: 2d 37 2e 31 38 20 7b 61 3d 3d 31 31 20 4f 52 20  -7.18 {a==11 OR 
6c90: 28 62 3e 31 30 30 30 20 41 4e 44 20 62 3c 32 30  (b>1000 AND b<20
6ca0: 30 30 29 7d 20 20 7b 31 30 20 31 31 7d 0a 74 65  00)}  {10 11}.te
6cb0: 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e  st_expr2 expr-7.
6cc0: 31 39 20 7b 61 3c 3d 31 20 4f 52 20 61 3e 3d 32  19 {a<=1 OR a>=2
6cd0: 30 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  0}              
6ce0: 20 20 20 7b 31 20 32 30 7d 0a 74 65 73 74 5f 65     {1 20}.test_e
6cf0: 78 70 72 32 20 65 78 70 72 2d 37 2e 32 30 20 7b  xpr2 expr-7.20 {
6d00: 61 3c 31 20 4f 52 20 61 3e 32 30 7d 20 20 20 20  a<1 OR a>20}    
6d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
6d20: 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70  }.test_expr2 exp
6d30: 72 2d 37 2e 32 31 20 7b 61 3e 31 39 20 4f 52 20  r-7.21 {a>19 OR 
6d40: 61 3c 31 7d 20 20 20 20 20 20 20 20 20 20 20 20  a<1}            
6d50: 20 20 20 20 20 20 20 7b 32 30 7d 0a 74 65 73 74         {20}.test
6d60: 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 32 32  _expr2 expr-7.22
6d70: 20 7b 61 21 3d 31 20 4f 52 20 61 3d 31 30 30 7d   {a!=1 OR a=100}
6d80: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
6d90: 20 20 20 20 20 20 20 20 20 20 20 20 7b 32 20 33              {2 3
6da0: 20 34 20 35 20 36 20 37 20 38 20 39 20 31 30 20   4 5 6 7 8 9 10 
6db0: 31 31 20 31 32 20 31 33 20 31 34 20 31 35 20 31  11 12 13 14 15 1
6dc0: 36 20 31 37 20 31 38 20 31 39 20 32 30 7d 0a 74  6 17 18 19 20}.t
6dd0: 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37  est_expr2 expr-7
6de0: 2e 32 33 20 7b 28 61 20 6e 6f 74 6e 75 6c 6c 20  .23 {(a notnull 
6df0: 41 4e 44 20 61 3c 34 29 20 4f 52 20 61 3d 3d 38  AND a<4) OR a==8
6e00: 7d 20 20 20 7b 31 20 32 20 33 20 38 7d 0a 74 65  }   {1 2 3 8}.te
6e10: 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e  st_expr2 expr-7.
6e20: 32 34 20 7b 61 20 4c 49 4b 45 20 27 32 5f 27 20  24 {a LIKE '2_' 
6e30: 4f 52 20 61 3d 3d 38 7d 20 20 20 20 20 20 20 20  OR a==8}        
6e40: 20 20 20 7b 38 20 32 30 7d 0a 74 65 73 74 5f 65     {8 20}.test_e
6e50: 78 70 72 32 20 65 78 70 72 2d 37 2e 32 35 20 7b  xpr2 expr-7.25 {
6e60: 61 20 47 4c 4f 42 20 27 32 3f 27 20 4f 52 20 61  a GLOB '2?' OR a
6e70: 3d 3d 38 7d 20 20 20 20 20 20 20 20 20 20 20 7b  ==8}           {
6e80: 38 20 32 30 7d 0a 74 65 73 74 5f 65 78 70 72 32  8 20}.test_expr2
6e90: 20 65 78 70 72 2d 37 2e 32 36 20 7b 61 20 69 73   expr-7.26 {a is
6ea0: 6e 75 6c 6c 20 4f 52 20 61 3d 38 7d 20 20 20 20  null OR a=8}    
6eb0: 20 20 20 20 20 20 20 20 20 20 20 7b 7b 7d 20 38             {{} 8
6ec0: 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70  }.test_expr2 exp
6ed0: 72 2d 37 2e 32 37 20 7b 61 20 6e 6f 74 6e 75 6c  r-7.27 {a notnul
6ee0: 6c 20 4f 52 20 61 3d 38 7d 20 5c 0a 20 20 20 20  l OR a=8} \.    
6ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f00: 20 20 20 20 20 20 7b 31 20 32 20 33 20 34 20 35        {1 2 3 4 5
6f10: 20 36 20 37 20 38 20 39 20 31 30 20 31 31 20 31   6 7 8 9 10 11 1
6f20: 32 20 31 33 20 31 34 20 31 35 20 31 36 20 31 37  2 13 14 15 16 17
6f30: 20 31 38 20 31 39 20 32 30 7d 0a 74 65 73 74 5f   18 19 20}.test_
6f40: 65 78 70 72 32 20 65 78 70 72 2d 37 2e 32 38 20  expr2 expr-7.28 
6f50: 7b 61 3c 30 20 4f 52 20 62 3d 30 7d 20 7b 7b 7d  {a<0 OR b=0} {{}
6f60: 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70  }.test_expr2 exp
6f70: 72 2d 37 2e 32 39 20 7b 62 3d 30 20 4f 52 20 61  r-7.29 {b=0 OR a
6f80: 3c 30 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78  <0} {{}}.test_ex
6f90: 70 72 32 20 65 78 70 72 2d 37 2e 33 30 20 7b 61  pr2 expr-7.30 {a
6fa0: 3c 30 20 41 4e 44 20 62 3d 30 7d 20 7b 7d 0a 74  <0 AND b=0} {}.t
6fb0: 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37  est_expr2 expr-7
6fc0: 2e 33 31 20 7b 62 3d 30 20 41 4e 44 20 61 3c 30  .31 {b=0 AND a<0
6fd0: 7d 20 7b 7d 0a 74 65 73 74 5f 65 78 70 72 32 20  } {}.test_expr2 
6fe0: 65 78 70 72 2d 37 2e 33 32 20 7b 61 20 49 53 20  expr-7.32 {a IS 
6ff0: 4e 55 4c 4c 20 41 4e 44 20 28 61 3c 30 20 4f 52  NULL AND (a<0 OR
7000: 20 62 3d 30 29 7d 20 7b 7b 7d 7d 0a 74 65 73 74   b=0)} {{}}.test
7010: 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 33 33  _expr2 expr-7.33
7020: 20 7b 61 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20   {a IS NULL AND 
7030: 28 62 3d 30 20 4f 52 20 61 3c 30 29 7d 20 7b 7b  (b=0 OR a<0)} {{
7040: 7d 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  }}.test_expr2 ex
7050: 70 72 2d 37 2e 33 34 20 7b 61 20 49 53 20 4e 55  pr-7.34 {a IS NU
7060: 4c 4c 20 41 4e 44 20 28 61 3c 30 20 41 4e 44 20  LL AND (a<0 AND 
7070: 62 3d 30 29 7d 20 7b 7d 0a 74 65 73 74 5f 65 78  b=0)} {}.test_ex
7080: 70 72 32 20 65 78 70 72 2d 37 2e 33 35 20 7b 61  pr2 expr-7.35 {a
7090: 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 28 62 3d   IS NULL AND (b=
70a0: 30 20 41 4e 44 20 61 3c 30 29 7d 20 7b 7d 0a 74  0 AND a<0)} {}.t
70b0: 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37  est_expr2 expr-7
70c0: 2e 33 32 20 7b 28 61 3c 30 20 4f 52 20 62 3d 30  .32 {(a<0 OR b=0
70d0: 29 20 41 4e 44 20 61 20 49 53 20 4e 55 4c 4c 7d  ) AND a IS NULL}
70e0: 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 32   {{}}.test_expr2
70f0: 20 65 78 70 72 2d 37 2e 33 33 20 7b 28 62 3d 30   expr-7.33 {(b=0
7100: 20 4f 52 20 61 3c 30 29 20 41 4e 44 20 61 20 49   OR a<0) AND a I
7110: 53 20 4e 55 4c 4c 7d 20 7b 7b 7d 7d 0a 74 65 73  S NULL} {{}}.tes
7120: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 33  t_expr2 expr-7.3
7130: 34 20 7b 28 61 3c 30 20 41 4e 44 20 62 3d 30 29  4 {(a<0 AND b=0)
7140: 20 41 4e 44 20 61 20 49 53 20 4e 55 4c 4c 7d 20   AND a IS NULL} 
7150: 7b 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  {}.test_expr2 ex
7160: 70 72 2d 37 2e 33 35 20 7b 28 62 3d 30 20 41 4e  pr-7.35 {(b=0 AN
7170: 44 20 61 3c 30 29 20 41 4e 44 20 61 20 49 53 20  D a<0) AND a IS 
7180: 4e 55 4c 4c 7d 20 7b 7d 0a 74 65 73 74 5f 65 78  NULL} {}.test_ex
7190: 70 72 32 20 65 78 70 72 2d 37 2e 33 36 20 7b 61  pr2 expr-7.36 {a
71a0: 3c 32 20 4f 52 20 28 61 3c 30 20 4f 52 20 62 3d  <2 OR (a<0 OR b=
71b0: 30 29 7d 20 7b 7b 7d 20 31 7d 0a 74 65 73 74 5f  0)} {{} 1}.test_
71c0: 65 78 70 72 32 20 65 78 70 72 2d 37 2e 33 37 20  expr2 expr-7.37 
71d0: 7b 61 3c 32 20 4f 52 20 28 62 3d 30 20 4f 52 20  {a<2 OR (b=0 OR 
71e0: 61 3c 30 29 7d 20 7b 7b 7d 20 31 7d 0a 74 65 73  a<0)} {{} 1}.tes
71f0: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 33  t_expr2 expr-7.3
7200: 38 20 7b 61 3c 32 20 4f 52 20 28 61 3c 30 20 41  8 {a<2 OR (a<0 A
7210: 4e 44 20 62 3d 30 29 7d 20 7b 31 7d 0a 74 65 73  ND b=0)} {1}.tes
7220: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 33  t_expr2 expr-7.3
7230: 39 20 7b 61 3c 32 20 4f 52 20 28 62 3d 30 20 41  9 {a<2 OR (b=0 A
7240: 4e 44 20 61 3c 30 29 7d 20 7b 31 7d 0a 74 65 73  ND a<0)} {1}.tes
7250: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 34  t_expr2 expr-7.4
7260: 30 20 7b 28 28 61 3c 32 20 4f 52 20 61 20 49 53  0 {((a<2 OR a IS
7270: 20 4e 55 4c 4c 29 20 41 4e 44 20 62 3c 33 29 20   NULL) AND b<3) 
7280: 4f 52 20 62 3e 31 65 31 30 7d 20 7b 7b 7d 20 31  OR b>1e10} {{} 1
7290: 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70  }.test_expr2 exp
72a0: 72 2d 37 2e 34 31 20 7b 61 20 42 45 54 57 45 45  r-7.41 {a BETWEE
72b0: 4e 20 2d 31 20 41 4e 44 20 31 7d 20 7b 31 7d 0a  N -1 AND 1} {1}.
72c0: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
72d0: 37 2e 34 32 20 7b 61 20 4e 4f 54 20 42 45 54 57  7.42 {a NOT BETW
72e0: 45 45 4e 20 32 20 41 4e 44 20 31 30 30 7d 20 7b  EEN 2 AND 100} {
72f0: 31 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  1}.test_expr2 ex
7300: 70 72 2d 37 2e 34 33 20 7b 28 62 2b 31 32 33 34  pr-7.43 {(b+1234
7310: 29 7c 7c 27 74 68 69 73 20 69 73 20 61 20 73 74  )||'this is a st
7320: 72 69 6e 67 20 74 68 61 74 20 69 73 20 61 74 20  ring that is at 
7330: 6c 65 61 73 74 20 33 32 20 63 68 61 72 61 63 74  least 32 charact
7340: 65 72 73 20 6c 6f 6e 67 27 20 42 45 54 57 45 45  ers long' BETWEE
7350: 4e 20 31 20 41 4e 44 20 32 7d 20 7b 7d 0a 74 65  N 1 AND 2} {}.te
7360: 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e  st_expr2 expr-7.
7370: 34 34 20 7b 31 32 33 7c 7c 27 78 61 62 63 64 65  44 {123||'xabcde
7380: 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75  fghijklmnopqrstu
7390: 76 77 79 78 7a 30 31 32 33 34 35 36 37 38 39 30  vwyxz01234567890
73a0: 27 7c 7c 61 20 42 45 54 57 45 45 4e 20 27 31 32  '||a BETWEEN '12
73b0: 33 61 27 20 41 4e 44 20 27 31 32 33 62 27 7d 20  3a' AND '123b'} 
73c0: 7b 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  {}.test_expr2 ex
73d0: 70 72 2d 37 2e 34 35 20 7b 28 28 31 32 33 7c 7c  pr-7.45 {((123||
73e0: 27 78 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e  'xabcdefghijklmn
73f0: 6f 70 71 72 73 74 75 76 77 79 78 7a 30 31 32 33  opqrstuvwyxz0123
7400: 34 35 36 37 38 39 30 27 7c 7c 61 29 20 42 45 54  4567890'||a) BET
7410: 57 45 45 4e 20 27 31 32 33 61 27 20 41 4e 44 20  WEEN '123a' AND 
7420: 27 31 32 33 62 27 29 3c 30 7d 20 7b 7d 0a 74 65  '123b')<0} {}.te
7430: 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e  st_expr2 expr-7.
7440: 34 36 20 7b 28 28 31 32 33 7c 7c 27 78 61 62 63  46 {((123||'xabc
7450: 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73  defghijklmnopqrs
7460: 74 75 76 77 79 78 7a 30 31 32 33 34 35 36 37 38  tuvwyxz012345678
7470: 39 30 27 7c 7c 61 29 20 42 45 54 57 45 45 4e 20  90'||a) BETWEEN 
7480: 27 31 32 33 61 27 20 41 4e 44 20 27 31 32 33 7a  '123a' AND '123z
7490: 27 29 3e 30 7d 20 7b 31 20 32 20 33 20 34 20 35  ')>0} {1 2 3 4 5
74a0: 20 36 20 37 20 38 20 39 20 31 30 20 31 31 20 31   6 7 8 9 10 11 1
74b0: 32 20 31 33 20 31 34 20 31 35 20 31 36 20 31 37  2 13 14 15 16 17
74c0: 20 31 38 20 31 39 20 32 30 7d 0a 0a 74 65 73 74   18 19 20}..test
74d0: 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 35 30  _expr2 expr-7.50
74e0: 20 7b 28 28 61 20 62 65 74 77 65 65 6e 20 31 20   {((a between 1 
74f0: 61 6e 64 20 32 20 4f 52 20 30 29 20 41 4e 44 20  and 2 OR 0) AND 
7500: 31 29 20 4f 52 20 30 7d 20 7b 31 20 32 7d 0a 74  1) OR 0} {1 2}.t
7510: 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37  est_expr2 expr-7
7520: 2e 35 31 20 7b 28 28 61 20 6e 6f 74 20 62 65 74  .51 {((a not bet
7530: 77 65 65 6e 20 33 20 61 6e 64 20 31 30 30 20 4f  ween 3 and 100 O
7540: 52 20 30 29 20 41 4e 44 20 31 29 20 4f 52 20 30  R 0) AND 1) OR 0
7550: 7d 20 7b 31 20 32 7d 0a 0a 69 66 63 61 70 61 62  } {1 2}..ifcapab
7560: 6c 65 20 73 75 62 71 75 65 72 79 20 7b 0a 20 20  le subquery {.  
7570: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
7580: 37 2e 35 32 20 7b 28 28 61 20 69 6e 20 28 31 2c  7.52 {((a in (1,
7590: 32 29 20 4f 52 20 30 29 20 41 4e 44 20 31 29 20  2) OR 0) AND 1) 
75a0: 4f 52 20 30 7d 20 7b 31 20 32 7d 0a 20 20 74 65  OR 0} {1 2}.  te
75b0: 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e  st_expr2 expr-7.
75c0: 35 33 20 5c 0a 20 20 20 20 20 20 7b 28 28 61 20  53 \.      {((a 
75d0: 6e 6f 74 20 69 6e 20 28 33 2c 34 2c 35 2c 36 2c  not in (3,4,5,6,
75e0: 37 2c 38 2c 39 2c 31 30 29 20 4f 52 20 30 29 20  7,8,9,10) OR 0) 
75f0: 41 4e 44 20 61 3c 31 31 29 20 4f 52 20 30 7d 20  AND a<11) OR 0} 
7600: 7b 31 20 32 7d 0a 7d 0a 74 65 73 74 5f 65 78 70  {1 2}.}.test_exp
7610: 72 32 20 65 78 70 72 2d 37 2e 35 34 20 7b 28 28  r2 expr-7.54 {((
7620: 61 3e 30 20 4f 52 20 30 29 20 41 4e 44 20 61 3c  a>0 OR 0) AND a<
7630: 33 29 20 4f 52 20 30 7d 20 7b 31 20 32 7d 0a 69  3) OR 0} {1 2}.i
7640: 66 63 61 70 61 62 6c 65 20 73 75 62 71 75 65 72  fcapable subquer
7650: 79 20 7b 0a 20 20 74 65 73 74 5f 65 78 70 72 32  y {.  test_expr2
7660: 20 65 78 70 72 2d 37 2e 35 35 20 7b 28 28 61 20   expr-7.55 {((a 
7670: 69 6e 20 28 31 2c 32 29 20 4f 52 20 30 29 20 49  in (1,2) OR 0) I
7680: 53 20 4e 55 4c 4c 20 41 4e 44 20 31 29 20 4f 52  S NULL AND 1) OR
7690: 20 30 7d 20 7b 7b 7d 7d 0a 20 20 74 65 73 74 5f   0} {{}}.  test_
76a0: 65 78 70 72 32 20 65 78 70 72 2d 37 2e 35 36 20  expr2 expr-7.56 
76b0: 5c 0a 20 20 20 20 20 20 7b 28 28 61 20 6e 6f 74  \.      {((a not
76c0: 20 69 6e 20 28 33 2c 34 2c 35 2c 36 2c 37 2c 38   in (3,4,5,6,7,8
76d0: 2c 39 2c 31 30 29 20 49 53 20 4e 55 4c 4c 20 4f  ,9,10) IS NULL O
76e0: 52 20 30 29 20 41 4e 44 20 31 29 20 4f 52 20 30  R 0) AND 1) OR 0
76f0: 7d 20 7b 7b 7d 7d 0a 7d 0a 74 65 73 74 5f 65 78  } {{}}.}.test_ex
7700: 70 72 32 20 65 78 70 72 2d 37 2e 35 37 20 7b 28  pr2 expr-7.57 {(
7710: 28 61 3e 30 20 49 53 20 4e 55 4c 4c 20 4f 52 20  (a>0 IS NULL OR 
7720: 30 29 20 41 4e 44 20 31 29 20 4f 52 20 30 7d 20  0) AND 1) OR 0} 
7730: 7b 7b 7d 7d 0a 0a 74 65 73 74 5f 65 78 70 72 32  {{}}..test_expr2
7740: 20 65 78 70 72 2d 37 2e 35 38 20 20 7b 28 61 7c   expr-7.58  {(a|
7750: 7c 27 27 29 3c 3d 27 31 27 7d 20 20 20 20 20 20  |'')<='1'}      
7760: 20 20 20 20 20 20 20 20 20 20 20 20 7b 31 7d 0a              {1}.
7770: 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72  .test_expr2 expr
7780: 2d 37 2e 35 39 20 7b 4c 49 4b 45 28 27 31 30 25  -7.59 {LIKE('10%
7790: 27 2c 62 29 7d 20 20 20 20 20 20 20 20 20 20 20  ',b)}           
77a0: 20 20 20 20 20 20 20 7b 31 30 20 32 30 7d 0a 74         {10 20}.t
77b0: 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37  est_expr2 expr-7
77c0: 2e 36 30 20 7b 4c 49 4b 45 28 27 5f 34 27 2c 62  .60 {LIKE('_4',b
77d0: 29 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  )}              
77e0: 20 20 20 20 20 7b 36 7d 0a 74 65 73 74 5f 65 78       {6}.test_ex
77f0: 70 72 32 20 65 78 70 72 2d 37 2e 36 31 20 7b 47  pr2 expr-7.61 {G
7800: 4c 4f 42 28 27 31 3f 27 2c 61 29 7d 20 20 20 20  LOB('1?',a)}    
7810: 20 20 20 20 20 20 20 20 7b 31 30 20 31 31 20 31          {10 11 1
7820: 32 20 31 33 20 31 34 20 31 35 20 31 36 20 31 37  2 13 14 15 16 17
7830: 20 31 38 20 31 39 7d 0a 74 65 73 74 5f 65 78 70   18 19}.test_exp
7840: 72 32 20 65 78 70 72 2d 37 2e 36 32 20 7b 47 4c  r2 expr-7.62 {GL
7850: 4f 42 28 27 31 2a 34 27 2c 62 29 7d 20 20 20 20  OB('1*4',b)}    
7860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 31                {1
7870: 30 20 31 34 7d 0a 74 65 73 74 5f 65 78 70 72 32  0 14}.test_expr2
7880: 20 65 78 70 72 2d 37 2e 36 33 20 7b 47 4c 4f 42   expr-7.63 {GLOB
7890: 28 27 2a 31 5b 34 35 36 5d 27 2c 62 29 7d 20 20  ('*1[456]',b)}  
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 34 7d 0a              {4}.
78b0: 0a 23 20 54 65 73 74 20 74 68 65 20 43 55 52 52  .# Test the CURR
78c0: 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e  ENT_TIME, CURREN
78d0: 54 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52  T_DATE, and CURR
78e0: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 65 78  ENT_TIMESTAMP ex
78f0: 70 72 65 73 73 69 6f 6e 73 2e 0a 23 0a 73 65 74  pressions..#.set
7900: 20 73 71 6c 69 74 65 5f 63 75 72 72 65 6e 74 5f   sqlite_current_
7910: 74 69 6d 65 20 31 31 35 37 31 32 34 38 34 39 0a  time 1157124849.
7920: 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 38 2e 31  do_test expr-8.1
7930: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45   {.  execsql {SE
7940: 4c 45 43 54 20 43 55 52 52 45 4e 54 5f 54 49 4d  LECT CURRENT_TIM
7950: 45 7d 0a 7d 20 7b 31 35 3a 33 34 3a 30 39 7d 0a  E}.} {15:34:09}.
7960: 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 38 2e 32  do_test expr-8.2
7970: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45   {.  execsql {SE
7980: 4c 45 43 54 20 43 55 52 52 45 4e 54 5f 44 41 54  LECT CURRENT_DAT
7990: 45 7d 0a 7d 20 7b 32 30 30 36 2d 30 39 2d 30 31  E}.} {2006-09-01
79a0: 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 38  }.do_test expr-8
79b0: 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .3 {.  execsql {
79c0: 53 45 4c 45 43 54 20 43 55 52 52 45 4e 54 5f 54  SELECT CURRENT_T
79d0: 49 4d 45 53 54 41 4d 50 7d 0a 7d 20 7b 7b 32 30  IMESTAMP}.} {{20
79e0: 30 36 2d 30 39 2d 30 31 20 31 35 3a 33 34 3a 30  06-09-01 15:34:0
79f0: 39 7d 7d 0a 69 66 63 61 70 61 62 6c 65 20 64 61  9}}.ifcapable da
7a00: 74 65 74 69 6d 65 20 7b 0a 20 20 64 6f 5f 74 65  tetime {.  do_te
7a10: 73 74 20 65 78 70 72 2d 38 2e 34 20 7b 0a 20 20  st expr-8.4 {.  
7a20: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
7a30: 54 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 3d 3d  T CURRENT_TIME==
7a40: 74 69 6d 65 28 27 6e 6f 77 27 29 3b 7d 0a 20 20  time('now');}.  
7a50: 7d 20 31 0a 20 20 64 6f 5f 74 65 73 74 20 65 78  } 1.  do_test ex
7a60: 70 72 2d 38 2e 35 20 7b 0a 20 20 20 20 65 78 65  pr-8.5 {.    exe
7a70: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 43 55 52  csql {SELECT CUR
7a80: 52 45 4e 54 5f 44 41 54 45 3d 3d 64 61 74 65 28  RENT_DATE==date(
7a90: 27 6e 6f 77 27 29 3b 7d 0a 20 20 7d 20 31 0a 20  'now');}.  } 1. 
7aa0: 20 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 38 2e   do_test expr-8.
7ab0: 36 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  6 {.    execsql 
7ac0: 7b 53 45 4c 45 43 54 20 43 55 52 52 45 4e 54 5f  {SELECT CURRENT_
7ad0: 54 49 4d 45 53 54 41 4d 50 3d 3d 64 61 74 65 74  TIMESTAMP==datet
7ae0: 69 6d 65 28 27 6e 6f 77 27 29 3b 7d 0a 20 20 7d  ime('now');}.  }
7af0: 20 31 0a 7d 0a 73 65 74 20 73 71 6c 69 74 65 5f   1.}.set sqlite_
7b00: 63 75 72 72 65 6e 74 5f 74 69 6d 65 20 30 0a 0a  current_time 0..
7b10: 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 39 2e 31  do_test expr-9.1
7b20: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45   {.  execsql {SE
7b30: 4c 45 43 54 20 72 6f 75 6e 64 28 2d 28 27 2d 27  LECT round(-('-'
7b40: 7c 7c 27 31 32 33 27 29 29 7d 0a 7d 20 31 32 33  ||'123'))}.} 123
7b50: 2e 30 0a 0a 23 20 54 65 73 74 20 61 6e 20 65 72  .0..# Test an er
7b60: 72 6f 72 20 6d 65 73 73 61 67 65 20 74 68 61 74  ror message that
7b70: 20 63 61 6e 20 62 65 20 67 65 6e 65 72 61 74 65   can be generate
7b80: 64 20 62 79 20 74 68 65 20 4c 49 4b 45 20 65 78  d by the LIKE ex
7b90: 70 72 65 73 73 69 6f 6e 0a 64 6f 5f 74 65 73 74  pression.do_test
7ba0: 20 65 78 70 72 2d 31 30 2e 31 20 7b 0a 20 20 63   expr-10.1 {.  c
7bb0: 61 74 63 68 73 71 6c 20 7b 53 45 4c 45 43 54 20  atchsql {SELECT 
7bc0: 27 61 62 63 27 20 4c 49 4b 45 20 27 61 62 63 27  'abc' LIKE 'abc'
7bd0: 20 45 53 43 41 50 45 20 27 27 7d 0a 7d 20 7b 31   ESCAPE ''}.} {1
7be0: 20 7b 45 53 43 41 50 45 20 65 78 70 72 65 73 73   {ESCAPE express
7bf0: 69 6f 6e 20 6d 75 73 74 20 62 65 20 61 20 73 69  ion must be a si
7c00: 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 7d 7d  ngle character}}
7c10: 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31 30  .do_test expr-10
7c20: 2e 32 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20  .2 {.  catchsql 
7c30: 7b 53 45 4c 45 43 54 20 27 61 62 63 27 20 4c 49  {SELECT 'abc' LI
7c40: 4b 45 20 27 61 62 63 27 20 45 53 43 41 50 45 20  KE 'abc' ESCAPE 
7c50: 27 61 62 27 7d 0a 7d 20 7b 31 20 7b 45 53 43 41  'ab'}.} {1 {ESCA
7c60: 50 45 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 75  PE expression mu
7c70: 73 74 20 62 65 20 61 20 73 69 6e 67 6c 65 20 63  st be a single c
7c80: 68 61 72 61 63 74 65 72 7d 7d 0a 0a 23 20 49 66  haracter}}..# If
7c90: 20 77 65 20 73 70 65 63 69 66 79 20 61 6e 20 69   we specify an i
7ca0: 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 20  nteger constant 
7cb0: 74 68 61 74 20 69 73 20 62 69 67 67 65 72 20 74  that is bigger t
7cc0: 68 61 6e 20 74 68 65 20 6c 61 72 67 65 73 74 0a  han the largest.
7cd0: 23 20 70 6f 73 73 69 62 6c 65 20 69 6e 74 65 67  # possible integ
7ce0: 65 72 2c 20 63 6f 64 65 20 74 68 65 20 69 6e 74  er, code the int
7cf0: 65 67 65 72 20 61 73 20 61 20 72 65 61 6c 20 6e  eger as a real n
7d00: 75 6d 62 65 72 2e 0a 23 0a 64 6f 5f 74 65 73 74  umber..#.do_test
7d10: 20 65 78 70 72 2d 31 31 2e 31 20 7b 0a 20 20 65   expr-11.1 {.  e
7d20: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 74  xecsql {SELECT t
7d30: 79 70 65 6f 66 28 39 32 32 33 33 37 32 30 33 36  ypeof(9223372036
7d40: 38 35 34 37 37 35 38 30 37 29 7d 0a 7d 20 7b 69  854775807)}.} {i
7d50: 6e 74 65 67 65 72 7d 0a 64 6f 5f 74 65 73 74 20  nteger}.do_test 
7d60: 65 78 70 72 2d 31 31 2e 32 20 7b 0a 20 20 65 78  expr-11.2 {.  ex
7d70: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 74 79  ecsql {SELECT ty
7d80: 70 65 6f 66 28 30 30 30 30 30 30 30 39 32 32 33  peof(00000009223
7d90: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37 29  372036854775807)
7da0: 7d 0a 7d 20 7b 69 6e 74 65 67 65 72 7d 0a 64 6f  }.} {integer}.do
7db0: 5f 74 65 73 74 20 65 78 70 72 2d 31 31 2e 33 20  _test expr-11.3 
7dc0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  {.  execsql {SEL
7dd0: 45 43 54 20 74 79 70 65 6f 66 28 2b 39 32 32 33  ECT typeof(+9223
7de0: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37 29  372036854775807)
7df0: 7d 0a 7d 20 7b 69 6e 74 65 67 65 72 7d 0a 64 6f  }.} {integer}.do
7e00: 5f 74 65 73 74 20 65 78 70 72 2d 31 31 2e 34 20  _test expr-11.4 
7e10: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  {.  execsql {SEL
7e20: 45 43 54 20 74 79 70 65 6f 66 28 2b 30 30 30 30  ECT typeof(+0000
7e30: 30 30 30 30 39 32 32 33 33 37 32 30 33 36 38 35  0000922337203685
7e40: 34 37 37 35 38 30 37 29 7d 0a 7d 20 7b 69 6e 74  4775807)}.} {int
7e50: 65 67 65 72 7d 0a 64 6f 5f 74 65 73 74 20 65 78  eger}.do_test ex
7e60: 70 72 2d 31 31 2e 35 20 7b 0a 20 20 65 78 65 63  pr-11.5 {.  exec
7e70: 73 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65  sql {SELECT type
7e80: 6f 66 28 39 32 32 33 33 37 32 30 33 36 38 35 34  of(9223372036854
7e90: 37 37 35 38 30 38 29 7d 0a 7d 20 7b 72 65 61 6c  775808)}.} {real
7ea0: 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31  }.do_test expr-1
7eb0: 31 2e 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.6 {.  execsql 
7ec0: 7b 53 45 4c 45 43 54 20 74 79 70 65 6f 66 28 30  {SELECT typeof(0
7ed0: 30 30 30 30 30 30 39 32 32 33 33 37 32 30 33 36  0000009223372036
7ee0: 38 35 34 37 37 35 38 30 38 29 7d 0a 7d 20 7b 72  854775808)}.} {r
7ef0: 65 61 6c 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70  eal}.do_test exp
7f00: 72 2d 31 31 2e 37 20 7b 0a 20 20 65 78 65 63 73  r-11.7 {.  execs
7f10: 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65 6f  ql {SELECT typeo
7f20: 66 28 2b 39 32 32 33 33 37 32 30 33 36 38 35 34  f(+9223372036854
7f30: 37 37 35 38 30 38 29 7d 0a 7d 20 7b 72 65 61 6c  775808)}.} {real
7f40: 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31  }.do_test expr-1
7f50: 31 2e 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.8 {.  execsql 
7f60: 7b 53 45 4c 45 43 54 20 74 79 70 65 6f 66 28 2b  {SELECT typeof(+
7f70: 30 30 30 30 30 30 39 32 32 33 33 37 32 30 33 36  0000009223372036
7f80: 38 35 34 37 37 35 38 30 38 29 7d 0a 7d 20 7b 72  854775808)}.} {r
7f90: 65 61 6c 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70  eal}.do_test exp
7fa0: 72 2d 31 31 2e 31 31 20 7b 0a 20 20 65 78 65 63  r-11.11 {.  exec
7fb0: 73 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65  sql {SELECT type
7fc0: 6f 66 28 2d 39 32 32 33 33 37 32 30 33 36 38 35  of(-922337203685
7fd0: 34 37 37 35 38 30 38 29 7d 0a 7d 20 7b 69 6e 74  4775808)}.} {int
7fe0: 65 67 65 72 7d 0a 64 6f 5f 74 65 73 74 20 65 78  eger}.do_test ex
7ff0: 70 72 2d 31 31 2e 31 32 20 7b 0a 20 20 65 78 65  pr-11.12 {.  exe
8000: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70  csql {SELECT typ
8010: 65 6f 66 28 2d 30 30 30 30 30 30 30 39 32 32 33  eof(-00000009223
8020: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38 29  372036854775808)
8030: 7d 0a 7d 20 7b 69 6e 74 65 67 65 72 7d 0a 64 6f  }.} {integer}.do
8040: 5f 74 65 73 74 20 65 78 70 72 2d 31 31 2e 31 33  _test expr-11.13
8050: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45   {.  execsql {SE
8060: 4c 45 43 54 20 74 79 70 65 6f 66 28 2d 39 32 32  LECT typeof(-922
8070: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 39  3372036854775809
8080: 29 7d 0a 7d 20 7b 72 65 61 6c 7d 0a 64 6f 5f 74  )}.} {real}.do_t
8090: 65 73 74 20 65 78 70 72 2d 31 31 2e 31 34 20 7b  est expr-11.14 {
80a0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  .  execsql {SELE
80b0: 43 54 20 74 79 70 65 6f 66 28 2d 30 30 30 30 30  CT typeof(-00000
80c0: 30 30 39 32 32 33 33 37 32 30 33 36 38 35 34 37  0092233720368547
80d0: 37 35 38 30 39 29 7d 0a 7d 20 7b 72 65 61 6c 7d  75809)}.} {real}
80e0: 0a 0a 23 20 54 68 65 73 65 20 74 77 6f 20 73 74  ..# These two st
80f0: 61 74 65 6d 65 6e 74 73 20 75 73 65 64 20 74 6f  atements used to
8100: 20 6c 65 61 6b 20 6d 65 6d 6f 72 79 20 28 62 65   leak memory (be
8110: 63 61 75 73 65 20 6f 66 20 6d 69 73 73 69 6e 67  cause of missing
8120: 20 25 64 65 73 74 72 75 63 74 6f 72 0a 23 20 64   %destructor.# d
8130: 69 72 65 63 74 69 76 65 73 20 69 6e 20 70 61 72  irectives in par
8140: 73 65 2e 79 29 2e 0a 64 6f 5f 74 65 73 74 20 65  se.y)..do_test e
8150: 78 70 72 2d 31 32 2e 31 20 7b 0a 20 20 63 61 74  xpr-12.1 {.  cat
8160: 63 68 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  chsql {.    SELE
8170: 43 54 20 28 43 41 53 45 20 61 3e 34 20 54 48 45  CT (CASE a>4 THE
8180: 4e 20 31 20 45 4c 53 45 20 30 20 45 4e 44 29 20  N 1 ELSE 0 END) 
8190: 46 52 4f 4d 20 74 65 73 74 31 3b 0a 20 20 7d 0a  FROM test1;.  }.
81a0: 7d 20 7b 31 20 7b 6e 65 61 72 20 22 54 48 45 4e  } {1 {near "THEN
81b0: 22 3a 20 73 79 6e 74 61 78 20 65 72 72 6f 72 7d  ": syntax error}
81c0: 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31  }.do_test expr-1
81d0: 32 2e 32 20 7b 0a 20 20 63 61 74 63 68 73 71 6c  2.2 {.  catchsql
81e0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 28 43   {.    SELECT (C
81f0: 41 53 45 20 57 48 45 4e 20 61 3e 34 20 54 48 45  ASE WHEN a>4 THE
8200: 4e 20 31 20 45 4c 53 45 20 30 29 20 46 52 4f 4d  N 1 ELSE 0) FROM
8210: 20 74 65 73 74 31 3b 0a 20 20 7d 0a 7d 20 7b 31   test1;.  }.} {1
8220: 20 7b 6e 65 61 72 20 22 29 22 3a 20 73 79 6e 74   {near ")": synt
8230: 61 78 20 65 72 72 6f 72 7d 7d 0a 0a 66 69 6e 69  ax error}}..fini
8240: 73 68 5f 74 65 73 74 0a                          sh_test.