/ Hex Artifact Content
Login

Artifact 620a636cf7b7d4e5834a0b9d83a4da372e24a7b7:


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 36   expr.test,v 1.6
01f0: 37 20 32 30 30 39 2f 30 32 2f 30 34 20 30 33 3a  7 2009/02/04 03:
0200: 35 39 3a 32 35 20 73 68 61 6e 65 20 45 78 70 20  59:25 shane Exp 
0210: 24 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b  $..set testdir [
0220: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72  file dirname $ar
0230: 67 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73  gv0].source $tes
0240: 74 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a  tdir/tester.tcl.
0250: 0a 23 20 43 72 65 61 74 65 20 61 20 74 61 62 6c  .# Create a tabl
0260: 65 20 74 6f 20 77 6f 72 6b 20 77 69 74 68 2e 0a  e to work with..
0270: 23 0a 69 66 63 61 70 61 62 6c 65 20 66 6c 6f 61  #.ifcapable floa
0280: 74 69 6e 67 70 6f 69 6e 74 20 7b 0a 20 20 65 78  tingpoint {.  ex
0290: 65 63 73 71 6c 20 7b 43 52 45 41 54 45 20 54 41  ecsql {CREATE TA
02a0: 42 4c 45 20 74 65 73 74 31 28 69 31 20 69 6e 74  BLE test1(i1 int
02b0: 2c 20 69 32 20 69 6e 74 2c 20 72 31 20 72 65 61  , i2 int, r1 rea
02c0: 6c 2c 20 72 32 20 72 65 61 6c 2c 20 74 31 20 74  l, r2 real, t1 t
02d0: 65 78 74 2c 20 74 32 20 74 65 78 74 29 7d 0a 20  ext, t2 text)}. 
02e0: 20 65 78 65 63 73 71 6c 20 7b 49 4e 53 45 52 54   execsql {INSERT
02f0: 20 49 4e 54 4f 20 74 65 73 74 31 20 56 41 4c 55   INTO test1 VALU
0300: 45 53 28 31 2c 32 2c 31 2e 31 2c 32 2e 32 2c 27  ES(1,2,1.1,2.2,'
0310: 68 65 6c 6c 6f 27 2c 27 77 6f 72 6c 64 27 29 7d  hello','world')}
0320: 0a 7d 0a 69 66 63 61 70 61 62 6c 65 20 21 66 6c  .}.ifcapable !fl
0330: 6f 61 74 69 6e 67 70 6f 69 6e 74 20 7b 0a 20 20  oatingpoint {.  
0340: 65 78 65 63 73 71 6c 20 7b 43 52 45 41 54 45 20  execsql {CREATE 
0350: 54 41 42 4c 45 20 74 65 73 74 31 28 69 31 20 69  TABLE test1(i1 i
0360: 6e 74 2c 20 69 32 20 69 6e 74 2c 20 74 31 20 74  nt, i2 int, t1 t
0370: 65 78 74 2c 20 74 32 20 74 65 78 74 29 7d 0a 20  ext, t2 text)}. 
0380: 20 65 78 65 63 73 71 6c 20 7b 49 4e 53 45 52 54   execsql {INSERT
0390: 20 49 4e 54 4f 20 74 65 73 74 31 20 56 41 4c 55   INTO test1 VALU
03a0: 45 53 28 31 2c 32 2c 27 68 65 6c 6c 6f 27 2c 27  ES(1,2,'hello','
03b0: 77 6f 72 6c 64 27 29 7d 0a 7d 0a 0a 70 72 6f 63  world')}.}..proc
03c0: 20 74 65 73 74 5f 65 78 70 72 20 7b 6e 61 6d 65   test_expr {name
03d0: 20 73 65 74 74 69 6e 67 73 20 65 78 70 72 20 72   settings expr r
03e0: 65 73 75 6c 74 7d 20 7b 0a 20 20 64 6f 5f 74 65  esult} {.  do_te
03f0: 73 74 20 24 6e 61 6d 65 20 5b 66 6f 72 6d 61 74  st $name [format
0400: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
0410: 42 45 47 49 4e 3b 20 55 50 44 41 54 45 20 74 65  BEGIN; UPDATE te
0420: 73 74 31 20 53 45 54 20 25 73 3b 20 53 45 4c 45  st1 SET %s; SELE
0430: 43 54 20 25 73 20 46 52 4f 4d 20 74 65 73 74 31  CT %s FROM test1
0440: 3b 20 52 4f 4c 4c 42 41 43 4b 3b 7d 0a 20 20 7d  ; ROLLBACK;}.  }
0450: 20 24 73 65 74 74 69 6e 67 73 20 24 65 78 70 72   $settings $expr
0460: 5d 20 24 72 65 73 75 6c 74 0a 7d 0a 0a 74 65 73  ] $result.}..tes
0470: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 20  t_expr expr-1.1 
0480: 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b  {i1=10, i2=20} {
0490: 69 31 2b 69 32 7d 20 33 30 0a 74 65 73 74 5f 65  i1+i2} 30.test_e
04a0: 78 70 72 20 65 78 70 72 2d 31 2e 32 20 7b 69 31  xpr expr-1.2 {i1
04b0: 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69 31 2d  =10, i2=20} {i1-
04c0: 69 32 7d 20 2d 31 30 0a 74 65 73 74 5f 65 78 70  i2} -10.test_exp
04d0: 72 20 65 78 70 72 2d 31 2e 33 20 7b 69 31 3d 31  r expr-1.3 {i1=1
04e0: 30 2c 20 69 32 3d 32 30 7d 20 7b 69 31 2a 69 32  0, i2=20} {i1*i2
04f0: 7d 20 32 30 30 0a 74 65 73 74 5f 65 78 70 72 20  } 200.test_expr 
0500: 65 78 70 72 2d 31 2e 34 20 7b 69 31 3d 31 30 2c  expr-1.4 {i1=10,
0510: 20 69 32 3d 32 30 7d 20 7b 69 31 2f 69 32 7d 20   i2=20} {i1/i2} 
0520: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
0530: 2d 31 2e 35 20 7b 69 31 3d 31 30 2c 20 69 32 3d  -1.5 {i1=10, i2=
0540: 32 30 7d 20 7b 69 32 2f 69 31 7d 20 32 0a 74 65  20} {i2/i1} 2.te
0550: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 36  st_expr expr-1.6
0560: 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20   {i1=10, i2=20} 
0570: 7b 69 32 3c 69 31 7d 20 30 0a 74 65 73 74 5f 65  {i2<i1} 0.test_e
0580: 78 70 72 20 65 78 70 72 2d 31 2e 37 20 7b 69 31  xpr expr-1.7 {i1
0590: 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3c  =10, i2=20} {i2<
05a0: 3d 69 31 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =i1} 0.test_expr
05b0: 20 65 78 70 72 2d 31 2e 38 20 7b 69 31 3d 31 30   expr-1.8 {i1=10
05c0: 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3e 69 31 7d  , i2=20} {i2>i1}
05d0: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
05e0: 72 2d 31 2e 39 20 7b 69 31 3d 31 30 2c 20 69 32  r-1.9 {i1=10, i2
05f0: 3d 32 30 7d 20 7b 69 32 3e 3d 69 31 7d 20 31 0a  =20} {i2>=i1} 1.
0600: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
0610: 2e 31 30 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32  .10 {i1=10, i2=2
0620: 30 7d 20 7b 69 32 21 3d 69 31 7d 20 31 0a 74 65  0} {i2!=i1} 1.te
0630: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31  st_expr expr-1.1
0640: 31 20 7b 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d  1 {i1=10, i2=20}
0650: 20 7b 69 32 3d 69 31 7d 20 30 0a 74 65 73 74 5f   {i2=i1} 0.test_
0660: 65 78 70 72 20 65 78 70 72 2d 31 2e 31 32 20 7b  expr expr-1.12 {
0670: 69 31 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69  i1=10, i2=20} {i
0680: 32 3c 3e 69 31 7d 20 31 0a 74 65 73 74 5f 65 78  2<>i1} 1.test_ex
0690: 70 72 20 65 78 70 72 2d 31 2e 31 33 20 7b 69 31  pr expr-1.13 {i1
06a0: 3d 31 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3d  =10, i2=20} {i2=
06b0: 3d 69 31 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =i1} 0.test_expr
06c0: 20 65 78 70 72 2d 31 2e 31 34 20 7b 69 31 3d 32   expr-1.14 {i1=2
06d0: 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3c 69 31  0, i2=20} {i2<i1
06e0: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
06f0: 70 72 2d 31 2e 31 35 20 7b 69 31 3d 32 30 2c 20  pr-1.15 {i1=20, 
0700: 69 32 3d 32 30 7d 20 7b 69 32 3c 3d 69 31 7d 20  i2=20} {i2<=i1} 
0710: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
0720: 2d 31 2e 31 36 20 7b 69 31 3d 32 30 2c 20 69 32  -1.16 {i1=20, i2
0730: 3d 32 30 7d 20 7b 69 32 3e 69 31 7d 20 30 0a 74  =20} {i2>i1} 0.t
0740: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
0750: 31 37 20 7b 69 31 3d 32 30 2c 20 69 32 3d 32 30  17 {i1=20, i2=20
0760: 7d 20 7b 69 32 3e 3d 69 31 7d 20 31 0a 74 65 73  } {i2>=i1} 1.tes
0770: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 38  t_expr expr-1.18
0780: 20 7b 69 31 3d 32 30 2c 20 69 32 3d 32 30 7d 20   {i1=20, i2=20} 
0790: 7b 69 32 21 3d 69 31 7d 20 30 0a 74 65 73 74 5f  {i2!=i1} 0.test_
07a0: 65 78 70 72 20 65 78 70 72 2d 31 2e 31 39 20 7b  expr expr-1.19 {
07b0: 69 31 3d 32 30 2c 20 69 32 3d 32 30 7d 20 7b 69  i1=20, i2=20} {i
07c0: 32 3d 69 31 7d 20 31 0a 74 65 73 74 5f 65 78 70  2=i1} 1.test_exp
07d0: 72 20 65 78 70 72 2d 31 2e 32 30 20 7b 69 31 3d  r expr-1.20 {i1=
07e0: 32 30 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3c 3e  20, i2=20} {i2<>
07f0: 69 31 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  i1} 0.test_expr 
0800: 65 78 70 72 2d 31 2e 32 31 20 7b 69 31 3d 32 30  expr-1.21 {i1=20
0810: 2c 20 69 32 3d 32 30 7d 20 7b 69 32 3d 3d 69 31  , i2=20} {i2==i1
0820: 7d 20 31 0a 69 66 63 61 70 61 62 6c 65 20 66 6c  } 1.ifcapable fl
0830: 6f 61 74 69 6e 67 70 6f 69 6e 74 20 7b 0a 20 20  oatingpoint {.  
0840: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
0850: 2e 32 32 20 7b 69 31 3d 31 2c 20 69 32 3d 32 2c  .22 {i1=1, i2=2,
0860: 20 72 31 3d 33 2e 30 7d 20 7b 69 31 2b 69 32 2a   r1=3.0} {i1+i2*
0870: 72 31 7d 20 7b 37 2e 30 7d 0a 20 20 74 65 73 74  r1} {7.0}.  test
0880: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 32 33 20  _expr expr-1.23 
0890: 7b 69 31 3d 31 2c 20 69 32 3d 32 2c 20 72 31 3d  {i1=1, i2=2, r1=
08a0: 33 2e 30 7d 20 7b 28 69 31 2b 69 32 29 2a 72 31  3.0} {(i1+i2)*r1
08b0: 7d 20 7b 39 2e 30 7d 0a 7d 0a 74 65 73 74 5f 65  } {9.0}.}.test_e
08c0: 78 70 72 20 65 78 70 72 2d 31 2e 32 34 20 7b 69  xpr expr-1.24 {i
08d0: 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 6d 69 6e 28  1=1, i2=2} {min(
08e0: 69 31 2c 69 32 2c 69 31 2b 69 32 2c 69 31 2d 69  i1,i2,i1+i2,i1-i
08f0: 32 29 7d 20 7b 2d 31 7d 0a 74 65 73 74 5f 65 78  2)} {-1}.test_ex
0900: 70 72 20 65 78 70 72 2d 31 2e 32 35 20 7b 69 31  pr expr-1.25 {i1
0910: 3d 31 2c 20 69 32 3d 32 7d 20 7b 6d 61 78 28 69  =1, i2=2} {max(i
0920: 31 2c 69 32 2c 69 31 2b 69 32 2c 69 31 2d 69 32  1,i2,i1+i2,i1-i2
0930: 29 7d 20 7b 33 7d 0a 74 65 73 74 5f 65 78 70 72  )} {3}.test_expr
0940: 20 65 78 70 72 2d 31 2e 32 36 20 7b 69 31 3d 31   expr-1.26 {i1=1
0950: 2c 20 69 32 3d 32 7d 20 7b 6d 61 78 28 69 31 2c  , i2=2} {max(i1,
0960: 69 32 2c 69 31 2b 69 32 2c 69 31 2d 69 32 29 7d  i2,i1+i2,i1-i2)}
0970: 20 7b 33 7d 0a 74 65 73 74 5f 65 78 70 72 20 65   {3}.test_expr e
0980: 78 70 72 2d 31 2e 32 37 20 7b 69 31 3d 31 2c 20  xpr-1.27 {i1=1, 
0990: 69 32 3d 32 7d 20 7b 69 31 3d 3d 31 20 41 4e 44  i2=2} {i1==1 AND
09a0: 20 69 32 3d 32 7d 20 7b 31 7d 0a 74 65 73 74 5f   i2=2} {1}.test_
09b0: 65 78 70 72 20 65 78 70 72 2d 31 2e 32 38 20 7b  expr expr-1.28 {
09c0: 69 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 69 31 3d  i1=1, i2=2} {i1=
09d0: 32 20 41 4e 44 20 69 32 3d 31 7d 20 7b 30 7d 0a  2 AND i2=1} {0}.
09e0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
09f0: 2e 32 39 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d  .29 {i1=1, i2=2}
0a00: 20 7b 69 31 3d 31 20 41 4e 44 20 69 32 3d 31 7d   {i1=1 AND i2=1}
0a10: 20 7b 30 7d 0a 74 65 73 74 5f 65 78 70 72 20 65   {0}.test_expr e
0a20: 78 70 72 2d 31 2e 33 30 20 7b 69 31 3d 31 2c 20  xpr-1.30 {i1=1, 
0a30: 69 32 3d 32 7d 20 7b 69 31 3d 32 20 41 4e 44 20  i2=2} {i1=2 AND 
0a40: 69 32 3d 32 7d 20 7b 30 7d 0a 74 65 73 74 5f 65  i2=2} {0}.test_e
0a50: 78 70 72 20 65 78 70 72 2d 31 2e 33 31 20 7b 69  xpr expr-1.31 {i
0a60: 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 69 31 3d 3d  1=1, i2=2} {i1==
0a70: 31 20 4f 52 20 69 32 3d 32 7d 20 7b 31 7d 0a 74  1 OR i2=2} {1}.t
0a80: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
0a90: 33 32 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20  32 {i1=1, i2=2} 
0aa0: 7b 69 31 3d 32 20 4f 52 20 69 32 3d 31 7d 20 7b  {i1=2 OR i2=1} {
0ab0: 30 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  0}.test_expr exp
0ac0: 72 2d 31 2e 33 33 20 7b 69 31 3d 31 2c 20 69 32  r-1.33 {i1=1, i2
0ad0: 3d 32 7d 20 7b 69 31 3d 31 20 4f 52 20 69 32 3d  =2} {i1=1 OR i2=
0ae0: 31 7d 20 7b 31 7d 0a 74 65 73 74 5f 65 78 70 72  1} {1}.test_expr
0af0: 20 65 78 70 72 2d 31 2e 33 34 20 7b 69 31 3d 31   expr-1.34 {i1=1
0b00: 2c 20 69 32 3d 32 7d 20 7b 69 31 3d 32 20 4f 52  , i2=2} {i1=2 OR
0b10: 20 69 32 3d 32 7d 20 7b 31 7d 0a 74 65 73 74 5f   i2=2} {1}.test_
0b20: 65 78 70 72 20 65 78 70 72 2d 31 2e 33 35 20 7b  expr expr-1.35 {
0b30: 69 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 69 31 2d  i1=1, i2=2} {i1-
0b40: 69 32 3d 2d 31 7d 20 7b 31 7d 0a 74 65 73 74 5f  i2=-1} {1}.test_
0b50: 65 78 70 72 20 65 78 70 72 2d 31 2e 33 36 20 7b  expr expr-1.36 {
0b60: 69 31 3d 31 2c 20 69 32 3d 30 7d 20 7b 6e 6f 74  i1=1, i2=0} {not
0b70: 20 69 31 7d 20 7b 30 7d 0a 74 65 73 74 5f 65 78   i1} {0}.test_ex
0b80: 70 72 20 65 78 70 72 2d 31 2e 33 37 20 7b 69 31  pr expr-1.37 {i1
0b90: 3d 31 2c 20 69 32 3d 30 7d 20 7b 6e 6f 74 20 69  =1, i2=0} {not i
0ba0: 32 7d 20 7b 31 7d 0a 74 65 73 74 5f 65 78 70 72  2} {1}.test_expr
0bb0: 20 65 78 70 72 2d 31 2e 33 38 20 7b 69 31 3d 31   expr-1.38 {i1=1
0bc0: 7d 20 7b 2d 69 31 7d 20 7b 2d 31 7d 0a 74 65 73  } {-i1} {-1}.tes
0bd0: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 33 39  t_expr expr-1.39
0be0: 20 7b 69 31 3d 31 7d 20 7b 2b 69 31 7d 20 7b 31   {i1=1} {+i1} {1
0bf0: 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  }.test_expr expr
0c00: 2d 31 2e 34 30 20 7b 69 31 3d 31 2c 20 69 32 3d  -1.40 {i1=1, i2=
0c10: 32 7d 20 7b 2b 28 69 32 2b 69 31 29 7d 20 7b 33  2} {+(i2+i1)} {3
0c20: 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  }.test_expr expr
0c30: 2d 31 2e 34 31 20 7b 69 31 3d 31 2c 20 69 32 3d  -1.41 {i1=1, i2=
0c40: 32 7d 20 7b 2d 28 69 32 2b 69 31 29 7d 20 7b 2d  2} {-(i2+i1)} {-
0c50: 33 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  3}.test_expr exp
0c60: 72 2d 31 2e 34 32 20 7b 69 31 3d 31 2c 20 69 32  r-1.42 {i1=1, i2
0c70: 3d 32 7d 20 7b 69 31 7c 69 32 7d 20 7b 33 7d 0a  =2} {i1|i2} {3}.
0c80: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
0c90: 2e 34 32 62 20 7b 69 31 3d 31 2c 20 69 32 3d 32  .42b {i1=1, i2=2
0ca0: 7d 20 7b 34 7c 32 7d 20 7b 36 7d 0a 74 65 73 74  } {4|2} {6}.test
0cb0: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 34 33 20  _expr expr-1.43 
0cc0: 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 69 31  {i1=1, i2=2} {i1
0cd0: 26 69 32 7d 20 7b 30 7d 0a 74 65 73 74 5f 65 78  &i2} {0}.test_ex
0ce0: 70 72 20 65 78 70 72 2d 31 2e 34 33 62 20 7b 69  pr expr-1.43b {i
0cf0: 31 3d 31 2c 20 69 32 3d 32 7d 20 7b 34 26 35 7d  1=1, i2=2} {4&5}
0d00: 20 7b 34 7d 0a 74 65 73 74 5f 65 78 70 72 20 65   {4}.test_expr e
0d10: 78 70 72 2d 31 2e 34 34 20 7b 69 31 3d 31 7d 20  xpr-1.44 {i1=1} 
0d20: 7b 7e 69 31 7d 20 7b 2d 32 7d 0a 74 65 73 74 5f  {~i1} {-2}.test_
0d30: 65 78 70 72 20 65 78 70 72 2d 31 2e 34 34 62 20  expr expr-1.44b 
0d40: 7b 69 31 3d 4e 55 4c 4c 7d 20 7b 7e 69 31 7d 20  {i1=NULL} {~i1} 
0d50: 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65  {{}}.test_expr e
0d60: 78 70 72 2d 31 2e 34 35 20 7b 69 31 3d 31 2c 20  xpr-1.45 {i1=1, 
0d70: 69 32 3d 33 7d 20 7b 69 31 3c 3c 69 32 7d 20 7b  i2=3} {i1<<i2} {
0d80: 38 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  8}.test_expr exp
0d90: 72 2d 31 2e 34 36 20 7b 69 31 3d 33 32 2c 20 69  r-1.46 {i1=32, i
0da0: 32 3d 33 7d 20 7b 69 31 3e 3e 69 32 7d 20 7b 34  2=3} {i1>>i2} {4
0db0: 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  }.test_expr expr
0dc0: 2d 31 2e 34 37 20 7b 69 31 3d 39 39 39 39 39 39  -1.47 {i1=999999
0dd0: 39 39 39 39 2c 20 69 32 3d 38 38 38 38 38 38 38  9999, i2=8888888
0de0: 38 38 38 7d 20 7b 69 31 3c 69 32 7d 20 30 0a 74  888} {i1<i2} 0.t
0df0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
0e00: 34 38 20 7b 69 31 3d 39 39 39 39 39 39 39 39 39  48 {i1=999999999
0e10: 39 2c 20 69 32 3d 38 38 38 38 38 38 38 38 38 38  9, i2=8888888888
0e20: 7d 20 7b 69 31 3d 69 32 7d 20 30 0a 74 65 73 74  } {i1=i2} 0.test
0e30: 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 34 39 20  _expr expr-1.49 
0e40: 7b 69 31 3d 39 39 39 39 39 39 39 39 39 39 2c 20  {i1=9999999999, 
0e50: 69 32 3d 38 38 38 38 38 38 38 38 38 38 7d 20 7b  i2=8888888888} {
0e60: 69 31 3e 69 32 7d 20 31 0a 74 65 73 74 5f 65 78  i1>i2} 1.test_ex
0e70: 70 72 20 65 78 70 72 2d 31 2e 35 30 20 7b 69 31  pr expr-1.50 {i1
0e80: 3d 39 39 39 39 39 39 39 39 39 39 39 2c 20 69 32  =99999999999, i2
0e90: 3d 39 39 39 39 39 39 39 39 39 39 38 7d 20 7b 69  =99999999998} {i
0ea0: 31 3c 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70  1<i2} 0.test_exp
0eb0: 72 20 65 78 70 72 2d 31 2e 35 31 20 7b 69 31 3d  r expr-1.51 {i1=
0ec0: 39 39 39 39 39 39 39 39 39 39 39 2c 20 69 32 3d  99999999999, i2=
0ed0: 39 39 39 39 39 39 39 39 39 39 38 7d 20 7b 69 31  99999999998} {i1
0ee0: 3d 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =i2} 0.test_expr
0ef0: 20 65 78 70 72 2d 31 2e 35 32 20 7b 69 31 3d 39   expr-1.52 {i1=9
0f00: 39 39 39 39 39 39 39 39 39 39 2c 20 69 32 3d 39  9999999999, i2=9
0f10: 39 39 39 39 39 39 39 39 39 38 7d 20 7b 69 31 3e  9999999998} {i1>
0f20: 69 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  i2} 1.test_expr 
0f30: 65 78 70 72 2d 31 2e 35 33 20 7b 69 31 3d 30 39  expr-1.53 {i1=09
0f40: 39 39 39 39 39 39 39 39 39 39 2c 20 69 32 3d 39  9999999999, i2=9
0f50: 39 39 39 39 39 39 39 39 39 39 7d 20 7b 69 31 3c  9999999999} {i1<
0f60: 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  i2} 0.test_expr 
0f70: 65 78 70 72 2d 31 2e 35 34 20 7b 69 31 3d 30 39  expr-1.54 {i1=09
0f80: 39 39 39 39 39 39 39 39 39 39 2c 20 69 32 3d 39  9999999999, i2=9
0f90: 39 39 39 39 39 39 39 39 39 39 7d 20 7b 69 31 3d  9999999999} {i1=
0fa0: 69 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  i2} 1.test_expr 
0fb0: 65 78 70 72 2d 31 2e 35 35 20 7b 69 31 3d 30 39  expr-1.55 {i1=09
0fc0: 39 39 39 39 39 39 39 39 39 39 2c 20 69 32 3d 39  9999999999, i2=9
0fd0: 39 39 39 39 39 39 39 39 39 39 7d 20 7b 69 31 3e  9999999999} {i1>
0fe0: 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  i2} 0.test_expr 
0ff0: 65 78 70 72 2d 31 2e 35 36 20 7b 69 31 3d 32 35  expr-1.56 {i1=25
1000: 2c 20 69 32 3d 31 31 7d 20 7b 69 31 25 69 32 7d  , i2=11} {i1%i2}
1010: 20 33 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   3.test_expr exp
1020: 72 2d 31 2e 35 38 20 7b 69 31 3d 4e 55 4c 4c 2c  r-1.58 {i1=NULL,
1030: 20 69 32 3d 31 7d 20 7b 63 6f 61 6c 65 73 63 65   i2=1} {coalesce
1040: 28 69 31 2b 69 32 2c 39 39 29 7d 20 39 39 0a 74  (i1+i2,99)} 99.t
1050: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
1060: 35 39 20 7b 69 31 3d 31 2c 20 69 32 3d 4e 55 4c  59 {i1=1, i2=NUL
1070: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 2b  L} {coalesce(i1+
1080: 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  i2,99)} 99.test_
1090: 65 78 70 72 20 65 78 70 72 2d 31 2e 36 30 20 7b  expr expr-1.60 {
10a0: 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c 4c  i1=NULL, i2=NULL
10b0: 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 2b 69  } {coalesce(i1+i
10c0: 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65  2,99)} 99.test_e
10d0: 78 70 72 20 65 78 70 72 2d 31 2e 36 31 20 7b 69  xpr expr-1.61 {i
10e0: 31 3d 4e 55 4c 4c 2c 20 69 32 3d 31 7d 20 7b 63  1=NULL, i2=1} {c
10f0: 6f 61 6c 65 73 63 65 28 69 31 2d 69 32 2c 39 39  oalesce(i1-i2,99
1100: 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20  )} 99.test_expr 
1110: 65 78 70 72 2d 31 2e 36 32 20 7b 69 31 3d 31 2c  expr-1.62 {i1=1,
1120: 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65   i2=NULL} {coale
1130: 73 63 65 28 69 31 2d 69 32 2c 39 39 29 7d 20 39  sce(i1-i2,99)} 9
1140: 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  9.test_expr expr
1150: 2d 31 2e 36 33 20 7b 69 31 3d 4e 55 4c 4c 2c 20  -1.63 {i1=NULL, 
1160: 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73  i2=NULL} {coales
1170: 63 65 28 69 31 2d 69 32 2c 39 39 29 7d 20 39 39  ce(i1-i2,99)} 99
1180: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1190: 31 2e 36 34 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.64 {i1=NULL, i
11a0: 32 3d 31 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69  2=1} {coalesce(i
11b0: 31 2a 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73  1*i2,99)} 99.tes
11c0: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 36 35  t_expr expr-1.65
11d0: 20 7b 69 31 3d 31 2c 20 69 32 3d 4e 55 4c 4c 7d   {i1=1, i2=NULL}
11e0: 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 2a 69 32   {coalesce(i1*i2
11f0: 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65 78  ,99)} 99.test_ex
1200: 70 72 20 65 78 70 72 2d 31 2e 36 36 20 7b 69 31  pr expr-1.66 {i1
1210: 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c 4c 7d 20  =NULL, i2=NULL} 
1220: 7b 63 6f 61 6c 65 73 63 65 28 69 31 2a 69 32 2c  {coalesce(i1*i2,
1230: 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70  99)} 99.test_exp
1240: 72 20 65 78 70 72 2d 31 2e 36 37 20 7b 69 31 3d  r expr-1.67 {i1=
1250: 4e 55 4c 4c 2c 20 69 32 3d 31 7d 20 7b 63 6f 61  NULL, i2=1} {coa
1260: 6c 65 73 63 65 28 69 31 2f 69 32 2c 39 39 29 7d  lesce(i1/i2,99)}
1270: 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78   99.test_expr ex
1280: 70 72 2d 31 2e 36 38 20 7b 69 31 3d 31 2c 20 69  pr-1.68 {i1=1, i
1290: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
12a0: 65 28 69 31 2f 69 32 2c 39 39 29 7d 20 39 39 0a  e(i1/i2,99)} 99.
12b0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
12c0: 2e 36 39 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32  .69 {i1=NULL, i2
12d0: 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65  =NULL} {coalesce
12e0: 28 69 31 2f 69 32 2c 39 39 29 7d 20 39 39 0a 74  (i1/i2,99)} 99.t
12f0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
1300: 37 30 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d  70 {i1=NULL, i2=
1310: 31 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 3c  1} {coalesce(i1<
1320: 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  i2,99)} 99.test_
1330: 65 78 70 72 20 65 78 70 72 2d 31 2e 37 31 20 7b  expr expr-1.71 {
1340: 69 31 3d 31 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b  i1=1, i2=NULL} {
1350: 63 6f 61 6c 65 73 63 65 28 69 31 3e 69 32 2c 39  coalesce(i1>i2,9
1360: 39 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72  9)} 99.test_expr
1370: 20 65 78 70 72 2d 31 2e 37 32 20 7b 69 31 3d 4e   expr-1.72 {i1=N
1380: 55 4c 4c 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63  ULL, i2=NULL} {c
1390: 6f 61 6c 65 73 63 65 28 69 31 3c 3d 69 32 2c 39  oalesce(i1<=i2,9
13a0: 39 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72  9)} 99.test_expr
13b0: 20 65 78 70 72 2d 31 2e 37 33 20 7b 69 31 3d 4e   expr-1.73 {i1=N
13c0: 55 4c 4c 2c 20 69 32 3d 31 7d 20 7b 63 6f 61 6c  ULL, i2=1} {coal
13d0: 65 73 63 65 28 69 31 3e 3d 69 32 2c 39 39 29 7d  esce(i1>=i2,99)}
13e0: 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78   99.test_expr ex
13f0: 70 72 2d 31 2e 37 34 20 7b 69 31 3d 31 2c 20 69  pr-1.74 {i1=1, i
1400: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
1410: 65 28 69 31 21 3d 69 32 2c 39 39 29 7d 20 39 39  e(i1!=i2,99)} 99
1420: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1430: 31 2e 37 35 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.75 {i1=NULL, i
1440: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
1450: 65 28 69 31 3d 3d 69 32 2c 39 39 29 7d 20 39 39  e(i1==i2,99)} 99
1460: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1470: 31 2e 37 36 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.76 {i1=NULL, i
1480: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
1490: 65 28 6e 6f 74 20 69 31 2c 39 39 29 7d 20 39 39  e(not i1,99)} 99
14a0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
14b0: 31 2e 37 37 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.77 {i1=NULL, i
14c0: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
14d0: 65 28 2d 69 31 2c 39 39 29 7d 20 39 39 0a 74 65  e(-i1,99)} 99.te
14e0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 37  st_expr expr-1.7
14f0: 38 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e  8 {i1=NULL, i2=N
1500: 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69  ULL} {coalesce(i
1510: 31 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 69 32  1 IS NULL AND i2
1520: 3d 35 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  =5,99)} 99.test_
1530: 65 78 70 72 20 65 78 70 72 2d 31 2e 37 39 20 7b  expr expr-1.79 {
1540: 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c 4c  i1=NULL, i2=NULL
1550: 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69 31 20 49  } {coalesce(i1 I
1560: 53 20 4e 55 4c 4c 20 4f 52 20 69 32 3d 35 2c 39  S NULL OR i2=5,9
1570: 39 29 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  9)} 1.test_expr 
1580: 65 78 70 72 2d 31 2e 38 30 20 7b 69 31 3d 4e 55  expr-1.80 {i1=NU
1590: 4c 4c 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f  LL, i2=NULL} {co
15a0: 61 6c 65 73 63 65 28 69 31 3d 35 20 41 4e 44 20  alesce(i1=5 AND 
15b0: 69 32 20 49 53 20 4e 55 4c 4c 2c 39 39 29 7d 20  i2 IS NULL,99)} 
15c0: 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  99.test_expr exp
15d0: 72 2d 31 2e 38 31 20 7b 69 31 3d 4e 55 4c 4c 2c  r-1.81 {i1=NULL,
15e0: 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65   i2=NULL} {coale
15f0: 73 63 65 28 69 31 3d 35 20 4f 52 20 69 32 20 49  sce(i1=5 OR i2 I
1600: 53 20 4e 55 4c 4c 2c 39 39 29 7d 20 31 0a 74 65  S NULL,99)} 1.te
1610: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 38  st_expr expr-1.8
1620: 32 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d 33  2 {i1=NULL, i2=3
1630: 7d 20 7b 63 6f 61 6c 65 73 63 65 28 6d 69 6e 28  } {coalesce(min(
1640: 69 31 2c 69 32 2c 31 29 2c 39 39 29 7d 20 39 39  i1,i2,1),99)} 99
1650: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1660: 31 2e 38 33 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.83 {i1=NULL, i
1670: 32 3d 33 7d 20 7b 63 6f 61 6c 65 73 63 65 28 6d  2=3} {coalesce(m
1680: 61 78 28 69 31 2c 69 32 2c 31 29 2c 39 39 29 7d  ax(i1,i2,1),99)}
1690: 20 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78   99.test_expr ex
16a0: 70 72 2d 31 2e 38 34 20 7b 69 31 3d 33 2c 20 69  pr-1.84 {i1=3, i
16b0: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
16c0: 65 28 6d 69 6e 28 69 31 2c 69 32 2c 31 29 2c 39  e(min(i1,i2,1),9
16d0: 39 29 7d 20 39 39 0a 74 65 73 74 5f 65 78 70 72  9)} 99.test_expr
16e0: 20 65 78 70 72 2d 31 2e 38 35 20 7b 69 31 3d 33   expr-1.85 {i1=3
16f0: 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c  , i2=NULL} {coal
1700: 65 73 63 65 28 6d 61 78 28 69 31 2c 69 32 2c 31  esce(max(i1,i2,1
1710: 29 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f 65  ),99)} 99.test_e
1720: 78 70 72 20 65 78 70 72 2d 31 2e 38 36 20 7b 69  xpr expr-1.86 {i
1730: 31 3d 33 2c 20 69 32 3d 38 7d 20 7b 35 20 62 65  1=3, i2=8} {5 be
1740: 74 77 65 65 6e 20 69 31 20 61 6e 64 20 69 32 7d  tween i1 and i2}
1750: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
1760: 72 2d 31 2e 38 37 20 7b 69 31 3d 33 2c 20 69 32  r-1.87 {i1=3, i2
1770: 3d 38 7d 20 7b 35 20 6e 6f 74 20 62 65 74 77 65  =8} {5 not betwe
1780: 65 6e 20 69 31 20 61 6e 64 20 69 32 7d 20 30 0a  en i1 and i2} 0.
1790: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
17a0: 2e 38 38 20 7b 69 31 3d 33 2c 20 69 32 3d 38 7d  .88 {i1=3, i2=8}
17b0: 20 7b 35 35 20 62 65 74 77 65 65 6e 20 69 31 20   {55 between i1 
17c0: 61 6e 64 20 69 32 7d 20 30 0a 74 65 73 74 5f 65  and i2} 0.test_e
17d0: 78 70 72 20 65 78 70 72 2d 31 2e 38 39 20 7b 69  xpr expr-1.89 {i
17e0: 31 3d 33 2c 20 69 32 3d 38 7d 20 7b 35 35 20 6e  1=3, i2=8} {55 n
17f0: 6f 74 20 62 65 74 77 65 65 6e 20 69 31 20 61 6e  ot between i1 an
1800: 64 20 69 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  d i2} 1.test_exp
1810: 72 20 65 78 70 72 2d 31 2e 39 30 20 7b 69 31 3d  r expr-1.90 {i1=
1820: 33 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 35 20 62  3, i2=NULL} {5 b
1830: 65 74 77 65 65 6e 20 69 31 20 61 6e 64 20 69 32  etween i1 and i2
1840: 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72  } {{}}.test_expr
1850: 20 65 78 70 72 2d 31 2e 39 31 20 7b 69 31 3d 33   expr-1.91 {i1=3
1860: 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 35 20 6e 6f  , i2=NULL} {5 no
1870: 74 20 62 65 74 77 65 65 6e 20 69 31 20 61 6e 64  t between i1 and
1880: 20 69 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65   i2} {{}}.test_e
1890: 78 70 72 20 65 78 70 72 2d 31 2e 39 32 20 7b 69  xpr expr-1.92 {i
18a0: 31 3d 33 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 32  1=3, i2=NULL} {2
18b0: 20 62 65 74 77 65 65 6e 20 69 31 20 61 6e 64 20   between i1 and 
18c0: 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  i2} 0.test_expr 
18d0: 65 78 70 72 2d 31 2e 39 33 20 7b 69 31 3d 33 2c  expr-1.93 {i1=3,
18e0: 20 69 32 3d 4e 55 4c 4c 7d 20 7b 32 20 6e 6f 74   i2=NULL} {2 not
18f0: 20 62 65 74 77 65 65 6e 20 69 31 20 61 6e 64 20   between i1 and 
1900: 69 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  i2} 1.test_expr 
1910: 65 78 70 72 2d 31 2e 39 34 20 7b 69 31 3d 4e 55  expr-1.94 {i1=NU
1920: 4c 4c 2c 20 69 32 3d 38 7d 20 7b 32 20 62 65 74  LL, i2=8} {2 bet
1930: 77 65 65 6e 20 69 31 20 61 6e 64 20 69 32 7d 20  ween i1 and i2} 
1940: 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65  {{}}.test_expr e
1950: 78 70 72 2d 31 2e 39 35 20 7b 69 31 3d 4e 55 4c  xpr-1.95 {i1=NUL
1960: 4c 2c 20 69 32 3d 38 7d 20 7b 32 20 6e 6f 74 20  L, i2=8} {2 not 
1970: 62 65 74 77 65 65 6e 20 69 31 20 61 6e 64 20 69  between i1 and i
1980: 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78 70  2} {{}}.test_exp
1990: 72 20 65 78 70 72 2d 31 2e 39 34 20 7b 69 31 3d  r expr-1.94 {i1=
19a0: 4e 55 4c 4c 2c 20 69 32 3d 38 7d 20 7b 35 35 20  NULL, i2=8} {55 
19b0: 62 65 74 77 65 65 6e 20 69 31 20 61 6e 64 20 69  between i1 and i
19c0: 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65  2} 0.test_expr e
19d0: 78 70 72 2d 31 2e 39 35 20 7b 69 31 3d 4e 55 4c  xpr-1.95 {i1=NUL
19e0: 4c 2c 20 69 32 3d 38 7d 20 7b 35 35 20 6e 6f 74  L, i2=8} {55 not
19f0: 20 62 65 74 77 65 65 6e 20 69 31 20 61 6e 64 20   between i1 and 
1a00: 69 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  i2} 1.test_expr 
1a10: 65 78 70 72 2d 31 2e 39 36 20 7b 69 31 3d 4e 55  expr-1.96 {i1=NU
1a20: 4c 4c 2c 20 69 32 3d 33 7d 20 7b 63 6f 61 6c 65  LL, i2=3} {coale
1a30: 73 63 65 28 69 31 3c 3c 69 32 2c 39 39 29 7d 20  sce(i1<<i2,99)} 
1a40: 39 39 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  99.test_expr exp
1a50: 72 2d 31 2e 39 37 20 7b 69 31 3d 33 32 2c 20 69  r-1.97 {i1=32, i
1a60: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
1a70: 65 28 69 31 3e 3e 69 32 2c 39 39 29 7d 20 39 39  e(i1>>i2,99)} 99
1a80: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
1a90: 31 2e 39 38 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  1.98 {i1=NULL, i
1aa0: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
1ab0: 65 28 69 31 7c 69 32 2c 39 39 29 7d 20 39 39 0a  e(i1|i2,99)} 99.
1ac0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
1ad0: 2e 39 39 20 7b 69 31 3d 33 32 2c 20 69 32 3d 4e  .99 {i1=32, i2=N
1ae0: 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 69  ULL} {coalesce(i
1af0: 31 26 69 32 2c 39 39 29 7d 20 39 39 0a 74 65 73  1&i2,99)} 99.tes
1b00: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 30  t_expr expr-1.10
1b10: 30 20 7b 69 31 3d 31 2c 20 69 32 3d 27 27 7d 20  0 {i1=1, i2=''} 
1b20: 7b 69 31 3d 69 32 7d 20 30 0a 74 65 73 74 5f 65  {i1=i2} 0.test_e
1b30: 78 70 72 20 65 78 70 72 2d 31 2e 31 30 31 20 7b  xpr expr-1.101 {
1b40: 69 31 3d 30 2c 20 69 32 3d 27 27 7d 20 7b 69 31  i1=0, i2=''} {i1
1b50: 3d 69 32 7d 20 30 0a 0a 23 20 43 68 65 63 6b 20  =i2} 0..# Check 
1b60: 66 6f 72 20 70 72 6f 70 65 72 20 68 61 6e 64 6c  for proper handl
1b70: 69 6e 67 20 6f 66 20 36 34 2d 62 69 74 20 69 6e  ing of 64-bit in
1b80: 74 65 67 65 72 20 76 61 6c 75 65 73 2e 0a 23 0a  teger values..#.
1b90: 69 66 20 7b 5b 77 6f 72 6b 69 6e 67 5f 36 34 62  if {[working_64b
1ba0: 69 74 5f 69 6e 74 5d 7d 20 7b 0a 20 20 74 65 73  it_int]} {.  tes
1bb0: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 30  t_expr expr-1.10
1bc0: 32 20 7b 69 31 3d 34 30 2c 20 69 32 3d 31 7d 20  2 {i1=40, i2=1} 
1bd0: 7b 69 32 3c 3c 69 31 7d 20 31 30 39 39 35 31 31  {i2<<i1} 1099511
1be0: 36 32 37 37 37 36 0a 7d 0a 0a 69 66 63 61 70 61  627776.}..ifcapa
1bf0: 62 6c 65 20 66 6c 6f 61 74 69 6e 67 70 6f 69 6e  ble floatingpoin
1c00: 74 20 7b 0a 20 20 74 65 73 74 5f 65 78 70 72 20  t {.  test_expr 
1c10: 65 78 70 72 2d 31 2e 31 30 33 20 7b 69 31 3d 30  expr-1.103 {i1=0
1c20: 7d 20 7b 28 2d 32 31 34 37 34 38 33 36 34 38 2e  } {(-2147483648.
1c30: 30 20 25 20 2d 31 29 7d 20 30 2e 30 0a 20 20 74  0 % -1)} 0.0.  t
1c40: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
1c50: 31 30 34 20 7b 69 31 3d 30 7d 20 7b 28 2d 39 32  104 {i1=0} {(-92
1c60: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
1c70: 38 2e 30 20 25 20 2d 31 29 7d 20 30 2e 30 0a 20  8.0 % -1)} 0.0. 
1c80: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
1c90: 31 2e 31 30 35 20 7b 69 31 3d 30 7d 20 7b 28 2d  1.105 {i1=0} {(-
1ca0: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
1cb0: 38 30 38 2e 30 20 2f 20 2d 31 29 3e 31 7d 20 31  808.0 / -1)>1} 1
1cc0: 0a 7d 0a 0a 69 66 20 7b 5b 77 6f 72 6b 69 6e 67  .}..if {[working
1cd0: 5f 36 34 62 69 74 5f 69 6e 74 5d 7d 20 7b 0a 20  _64bit_int]} {. 
1ce0: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
1cf0: 31 2e 31 30 36 20 7b 69 31 3d 30 7d 20 7b 28 31  1.106 {i1=0} {(1
1d00: 3c 3c 36 33 29 2f 2d 31 7d 20 2d 39 32 32 33 33  <<63)/-1} -92233
1d10: 37 32 30 33 36 38 35 34 37 37 35 38 30 38 0a 7d  72036854775808.}
1d20: 0a 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  ..test_expr expr
1d30: 2d 31 2e 31 30 37 20 7b 69 31 3d 30 7d 20 7b 28  -1.107 {i1=0} {(
1d40: 31 3c 3c 36 33 29 25 2d 31 7d 20 30 0a 74 65 73  1<<63)%-1} 0.tes
1d50: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 30  t_expr expr-1.10
1d60: 38 20 7b 69 31 3d 30 7d 20 7b 31 25 30 7d 20 7b  8 {i1=0} {1%0} {
1d70: 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78  {}}.test_expr ex
1d80: 70 72 2d 31 2e 31 30 39 20 7b 69 31 3d 30 7d 20  pr-1.109 {i1=0} 
1d90: 7b 31 2f 30 7d 20 7b 7b 7d 7d 0a 0a 69 66 20 7b  {1/0} {{}}..if {
1da0: 5b 77 6f 72 6b 69 6e 67 5f 36 34 62 69 74 5f 69  [working_64bit_i
1db0: 6e 74 5d 7d 20 7b 0a 20 20 74 65 73 74 5f 65 78  nt]} {.  test_ex
1dc0: 70 72 20 65 78 70 72 2d 31 2e 31 31 30 20 7b 69  pr expr-1.110 {i
1dd0: 31 3d 30 7d 20 7b 2d 39 32 32 33 33 37 32 30 33  1=0} {-922337203
1de0: 36 38 35 34 37 37 35 38 30 37 2f 2d 31 7d 20 39  6854775807/-1} 9
1df0: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
1e00: 30 37 0a 7d 0a 0a 74 65 73 74 5f 65 78 70 72 20  07.}..test_expr 
1e10: 65 78 70 72 2d 31 2e 31 31 31 20 7b 69 31 3d 4e  expr-1.111 {i1=N
1e20: 55 4c 4c 2c 20 69 32 3d 38 7d 20 7b 69 31 20 49  ULL, i2=8} {i1 I
1e30: 53 20 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70  S i2} 0.test_exp
1e40: 72 20 65 78 70 72 2d 31 2e 31 31 32 20 7b 69 31  r expr-1.112 {i1
1e50: 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c 4c 7d 20  =NULL, i2=NULL} 
1e60: 7b 69 31 20 49 53 20 69 32 7d 20 31 0a 74 65 73  {i1 IS i2} 1.tes
1e70: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 31  t_expr expr-1.11
1e80: 33 20 7b 69 31 3d 36 2c 20 69 32 3d 4e 55 4c 4c  3 {i1=6, i2=NULL
1e90: 7d 20 7b 69 31 20 49 53 20 69 32 7d 20 30 0a 74  } {i1 IS i2} 0.t
1ea0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
1eb0: 31 31 34 20 7b 69 31 3d 36 2c 20 69 32 3d 36 7d  114 {i1=6, i2=6}
1ec0: 20 7b 69 31 20 49 53 20 69 32 7d 20 31 0a 74 65   {i1 IS i2} 1.te
1ed0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31  st_expr expr-1.1
1ee0: 31 35 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d  15 {i1=NULL, i2=
1ef0: 38 7d 20 5c 0a 20 20 7b 43 41 53 45 20 57 48 45  8} \.  {CASE WHE
1f00: 4e 20 69 31 20 49 53 20 69 32 20 54 48 45 4e 20  N i1 IS i2 THEN 
1f10: 27 79 65 73 27 20 45 4c 53 45 20 27 6e 6f 27 20  'yes' ELSE 'no' 
1f20: 45 4e 44 7d 20 6e 6f 0a 74 65 73 74 5f 65 78 70  END} no.test_exp
1f30: 72 20 65 78 70 72 2d 31 2e 31 31 36 20 7b 69 31  r expr-1.116 {i1
1f40: 3d 4e 55 4c 4c 2c 20 69 32 3d 4e 55 4c 4c 7d 20  =NULL, i2=NULL} 
1f50: 5c 0a 20 20 7b 43 41 53 45 20 57 48 45 4e 20 69  \.  {CASE WHEN i
1f60: 31 20 49 53 20 69 32 20 54 48 45 4e 20 27 79 65  1 IS i2 THEN 'ye
1f70: 73 27 20 45 4c 53 45 20 27 6e 6f 27 20 45 4e 44  s' ELSE 'no' END
1f80: 7d 20 79 65 73 0a 74 65 73 74 5f 65 78 70 72 20  } yes.test_expr 
1f90: 65 78 70 72 2d 31 2e 31 31 37 20 7b 69 31 3d 36  expr-1.117 {i1=6
1fa0: 2c 20 69 32 3d 4e 55 4c 4c 7d 20 5c 0a 20 20 7b  , i2=NULL} \.  {
1fb0: 43 41 53 45 20 57 48 45 4e 20 69 31 20 49 53 20  CASE WHEN i1 IS 
1fc0: 69 32 20 54 48 45 4e 20 27 79 65 73 27 20 45 4c  i2 THEN 'yes' EL
1fd0: 53 45 20 27 6e 6f 27 20 45 4e 44 7d 20 6e 6f 0a  SE 'no' END} no.
1fe0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
1ff0: 2e 31 31 38 20 7b 69 31 3d 38 2c 20 69 32 3d 38  .118 {i1=8, i2=8
2000: 7d 20 5c 0a 20 20 7b 43 41 53 45 20 57 48 45 4e  } \.  {CASE WHEN
2010: 20 69 31 20 49 53 20 69 32 20 54 48 45 4e 20 27   i1 IS i2 THEN '
2020: 79 65 73 27 20 45 4c 53 45 20 27 6e 6f 27 20 45  yes' ELSE 'no' E
2030: 4e 44 7d 20 79 65 73 0a 74 65 73 74 5f 65 78 70  ND} yes.test_exp
2040: 72 20 65 78 70 72 2d 31 2e 31 31 39 20 7b 69 31  r expr-1.119 {i1
2050: 3d 4e 55 4c 4c 2c 20 69 32 3d 38 7d 20 7b 69 31  =NULL, i2=8} {i1
2060: 20 49 53 20 4e 4f 54 20 69 32 7d 20 31 0a 74 65   IS NOT i2} 1.te
2070: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31  st_expr expr-1.1
2080: 32 30 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32 3d  20 {i1=NULL, i2=
2090: 4e 55 4c 4c 7d 20 7b 69 31 20 49 53 20 4e 4f 54  NULL} {i1 IS NOT
20a0: 20 69 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72   i2} 0.test_expr
20b0: 20 65 78 70 72 2d 31 2e 31 32 31 20 7b 69 31 3d   expr-1.121 {i1=
20c0: 36 2c 20 69 32 3d 4e 55 4c 4c 7d 20 7b 69 31 20  6, i2=NULL} {i1 
20d0: 49 53 20 4e 4f 54 20 69 32 7d 20 31 0a 74 65 73  IS NOT i2} 1.tes
20e0: 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e 31 32  t_expr expr-1.12
20f0: 32 20 7b 69 31 3d 36 2c 20 69 32 3d 36 7d 20 7b  2 {i1=6, i2=6} {
2100: 69 31 20 49 53 20 4e 4f 54 20 69 32 7d 20 30 0a  i1 IS NOT i2} 0.
2110: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
2120: 2e 31 32 33 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69  .123 {i1=NULL, i
2130: 32 3d 38 7d 20 5c 0a 20 20 7b 43 41 53 45 20 57  2=8} \.  {CASE W
2140: 48 45 4e 20 69 31 20 49 53 20 4e 4f 54 20 69 32  HEN i1 IS NOT i2
2150: 20 54 48 45 4e 20 27 79 65 73 27 20 45 4c 53 45   THEN 'yes' ELSE
2160: 20 27 6e 6f 27 20 45 4e 44 7d 20 79 65 73 0a 74   'no' END} yes.t
2170: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
2180: 31 32 34 20 7b 69 31 3d 4e 55 4c 4c 2c 20 69 32  124 {i1=NULL, i2
2190: 3d 4e 55 4c 4c 7d 20 5c 0a 20 20 7b 43 41 53 45  =NULL} \.  {CASE
21a0: 20 57 48 45 4e 20 69 31 20 49 53 20 4e 4f 54 20   WHEN i1 IS NOT 
21b0: 69 32 20 54 48 45 4e 20 27 79 65 73 27 20 45 4c  i2 THEN 'yes' EL
21c0: 53 45 20 27 6e 6f 27 20 45 4e 44 7d 20 6e 6f 0a  SE 'no' END} no.
21d0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31  test_expr expr-1
21e0: 2e 31 32 35 20 7b 69 31 3d 36 2c 20 69 32 3d 4e  .125 {i1=6, i2=N
21f0: 55 4c 4c 7d 20 5c 0a 20 20 7b 43 41 53 45 20 57  ULL} \.  {CASE W
2200: 48 45 4e 20 69 31 20 49 53 20 4e 4f 54 20 69 32  HEN i1 IS NOT i2
2210: 20 54 48 45 4e 20 27 79 65 73 27 20 45 4c 53 45   THEN 'yes' ELSE
2220: 20 27 6e 6f 27 20 45 4e 44 7d 20 79 65 73 0a 74   'no' END} yes.t
2230: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 31 2e  est_expr expr-1.
2240: 31 32 36 20 7b 69 31 3d 38 2c 20 69 32 3d 38 7d  126 {i1=8, i2=8}
2250: 20 5c 0a 20 20 7b 43 41 53 45 20 57 48 45 4e 20   \.  {CASE WHEN 
2260: 69 31 20 49 53 20 4e 4f 54 20 69 32 20 54 48 45  i1 IS NOT i2 THE
2270: 4e 20 27 79 65 73 27 20 45 4c 53 45 20 27 6e 6f  N 'yes' ELSE 'no
2280: 27 20 45 4e 44 7d 20 6e 6f 0a 0a 69 66 63 61 70  ' END} no..ifcap
2290: 61 62 6c 65 20 66 6c 6f 61 74 69 6e 67 70 6f 69  able floatingpoi
22a0: 6e 74 20 7b 0a 20 20 74 65 73 74 5f 65 78 70 72  nt {.  test_expr
22b0: 20 65 78 70 72 2d 32 2e 31 20 7b 72 31 3d 31 2e   expr-2.1 {r1=1.
22c0: 32 33 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72 31  23, r2=2.34} {r1
22d0: 2b 72 32 7d 20 33 2e 35 37 0a 20 20 74 65 73 74  +r2} 3.57.  test
22e0: 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 32 20 7b  _expr expr-2.2 {
22f0: 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e 33 34  r1=1.23, r2=2.34
2300: 7d 20 7b 72 31 2d 72 32 7d 20 2d 31 2e 31 31 0a  } {r1-r2} -1.11.
2310: 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72    test_expr expr
2320: 2d 32 2e 33 20 7b 72 31 3d 31 2e 32 33 2c 20 72  -2.3 {r1=1.23, r
2330: 32 3d 32 2e 33 34 7d 20 7b 72 31 2a 72 32 7d 20  2=2.34} {r1*r2} 
2340: 32 2e 38 37 38 32 0a 7d 0a 73 65 74 20 74 63 6c  2.8782.}.set tcl
2350: 5f 70 72 65 63 69 73 69 6f 6e 20 31 35 0a 69 66  _precision 15.if
2360: 63 61 70 61 62 6c 65 20 66 6c 6f 61 74 69 6e 67  capable floating
2370: 70 6f 69 6e 74 20 7b 0a 20 20 74 65 73 74 5f 65  point {.  test_e
2380: 78 70 72 20 65 78 70 72 2d 32 2e 34 20 7b 72 31  xpr expr-2.4 {r1
2390: 3d 31 2e 32 33 2c 20 72 32 3d 32 2e 33 34 7d 20  =1.23, r2=2.34} 
23a0: 7b 72 31 2f 72 32 7d 20 30 2e 35 32 35 36 34 31  {r1/r2} 0.525641
23b0: 30 32 35 36 34 31 30 32 36 0a 20 20 74 65 73 74  025641026.  test
23c0: 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 35 20 7b  _expr expr-2.5 {
23d0: 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e 33 34  r1=1.23, r2=2.34
23e0: 7d 20 7b 72 32 2f 72 31 7d 20 31 2e 39 30 32 34  } {r2/r1} 1.9024
23f0: 33 39 30 32 34 33 39 30 32 34 0a 20 20 74 65 73  3902439024.  tes
2400: 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 36 20  t_expr expr-2.6 
2410: 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e 33  {r1=1.23, r2=2.3
2420: 34 7d 20 7b 72 32 3c 72 31 7d 20 30 0a 20 20 74  4} {r2<r1} 0.  t
2430: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
2440: 37 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32  7 {r1=1.23, r2=2
2450: 2e 33 34 7d 20 7b 72 32 3c 3d 72 31 7d 20 30 0a  .34} {r2<=r1} 0.
2460: 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72    test_expr expr
2470: 2d 32 2e 38 20 7b 72 31 3d 31 2e 32 33 2c 20 72  -2.8 {r1=1.23, r
2480: 32 3d 32 2e 33 34 7d 20 7b 72 32 3e 72 31 7d 20  2=2.34} {r2>r1} 
2490: 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78  1.  test_expr ex
24a0: 70 72 2d 32 2e 39 20 7b 72 31 3d 31 2e 32 33 2c  pr-2.9 {r1=1.23,
24b0: 20 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3e 3d 72   r2=2.34} {r2>=r
24c0: 31 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72  1} 1.  test_expr
24d0: 20 65 78 70 72 2d 32 2e 31 30 20 7b 72 31 3d 31   expr-2.10 {r1=1
24e0: 2e 32 33 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72  .23, r2=2.34} {r
24f0: 32 21 3d 72 31 7d 20 31 0a 20 20 74 65 73 74 5f  2!=r1} 1.  test_
2500: 65 78 70 72 20 65 78 70 72 2d 32 2e 31 31 20 7b  expr expr-2.11 {
2510: 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e 33 34  r1=1.23, r2=2.34
2520: 7d 20 7b 72 32 3d 72 31 7d 20 30 0a 20 20 74 65  } {r2=r1} 0.  te
2530: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 31  st_expr expr-2.1
2540: 32 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32  2 {r1=1.23, r2=2
2550: 2e 33 34 7d 20 7b 72 32 3c 3e 72 31 7d 20 31 0a  .34} {r2<>r1} 1.
2560: 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72    test_expr expr
2570: 2d 32 2e 31 33 20 7b 72 31 3d 31 2e 32 33 2c 20  -2.13 {r1=1.23, 
2580: 72 32 3d 32 2e 33 34 7d 20 7b 72 32 3d 3d 72 31  r2=2.34} {r2==r1
2590: 7d 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72 20  } 0.  test_expr 
25a0: 65 78 70 72 2d 32 2e 31 34 20 7b 72 31 3d 32 2e  expr-2.14 {r1=2.
25b0: 33 34 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72 32  34, r2=2.34} {r2
25c0: 3c 72 31 7d 20 30 0a 20 20 74 65 73 74 5f 65 78  <r1} 0.  test_ex
25d0: 70 72 20 65 78 70 72 2d 32 2e 31 35 20 7b 72 31  pr expr-2.15 {r1
25e0: 3d 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34 7d 20  =2.34, r2=2.34} 
25f0: 7b 72 32 3c 3d 72 31 7d 20 31 0a 20 20 74 65 73  {r2<=r1} 1.  tes
2600: 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 31 36  t_expr expr-2.16
2610: 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32 3d 32 2e   {r1=2.34, r2=2.
2620: 33 34 7d 20 7b 72 32 3e 72 31 7d 20 30 0a 20 20  34} {r2>r1} 0.  
2630: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32  test_expr expr-2
2640: 2e 31 37 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32  .17 {r1=2.34, r2
2650: 3d 32 2e 33 34 7d 20 7b 72 32 3e 3d 72 31 7d 20  =2.34} {r2>=r1} 
2660: 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78  1.  test_expr ex
2670: 70 72 2d 32 2e 31 38 20 7b 72 31 3d 32 2e 33 34  pr-2.18 {r1=2.34
2680: 2c 20 72 32 3d 32 2e 33 34 7d 20 7b 72 32 21 3d  , r2=2.34} {r2!=
2690: 72 31 7d 20 30 0a 20 20 74 65 73 74 5f 65 78 70  r1} 0.  test_exp
26a0: 72 20 65 78 70 72 2d 32 2e 31 39 20 7b 72 31 3d  r expr-2.19 {r1=
26b0: 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34 7d 20 7b  2.34, r2=2.34} {
26c0: 72 32 3d 72 31 7d 20 31 0a 20 20 74 65 73 74 5f  r2=r1} 1.  test_
26d0: 65 78 70 72 20 65 78 70 72 2d 32 2e 32 30 20 7b  expr expr-2.20 {
26e0: 72 31 3d 32 2e 33 34 2c 20 72 32 3d 32 2e 33 34  r1=2.34, r2=2.34
26f0: 7d 20 7b 72 32 3c 3e 72 31 7d 20 30 0a 20 20 74  } {r2<>r1} 0.  t
2700: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e  est_expr expr-2.
2710: 32 31 20 7b 72 31 3d 32 2e 33 34 2c 20 72 32 3d  21 {r1=2.34, r2=
2720: 32 2e 33 34 7d 20 7b 72 32 3d 3d 72 31 7d 20 31  2.34} {r2==r1} 1
2730: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
2740: 72 2d 32 2e 32 32 20 7b 72 31 3d 31 2e 32 33 2c  r-2.22 {r1=1.23,
2750: 20 72 32 3d 32 2e 33 34 7d 20 7b 6d 69 6e 28 72   r2=2.34} {min(r
2760: 31 2c 72 32 2c 72 31 2b 72 32 2c 72 31 2d 72 32  1,r2,r1+r2,r1-r2
2770: 29 7d 20 7b 2d 31 2e 31 31 7d 0a 20 20 74 65 73  )} {-1.11}.  tes
2780: 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 32 33  t_expr expr-2.23
2790: 20 7b 72 31 3d 31 2e 32 33 2c 20 72 32 3d 32 2e   {r1=1.23, r2=2.
27a0: 33 34 7d 20 7b 6d 61 78 28 72 31 2c 72 32 2c 72  34} {max(r1,r2,r
27b0: 31 2b 72 32 2c 72 31 2d 72 32 29 7d 20 7b 33 2e  1+r2,r1-r2)} {3.
27c0: 35 37 7d 0a 20 20 74 65 73 74 5f 65 78 70 72 20  57}.  test_expr 
27d0: 65 78 70 72 2d 32 2e 32 34 20 7b 72 31 3d 32 35  expr-2.24 {r1=25
27e0: 2e 30 2c 20 72 32 3d 31 31 2e 30 7d 20 7b 72 31  .0, r2=11.0} {r1
27f0: 25 72 32 7d 20 33 2e 30 0a 20 20 74 65 73 74 5f  %r2} 3.0.  test_
2800: 65 78 70 72 20 65 78 70 72 2d 32 2e 32 35 20 7b  expr expr-2.25 {
2810: 72 31 3d 31 2e 32 33 2c 20 72 32 3d 4e 55 4c 4c  r1=1.23, r2=NULL
2820: 7d 20 7b 63 6f 61 6c 65 73 63 65 28 72 31 2b 72  } {coalesce(r1+r
2830: 32 2c 39 39 2e 30 29 7d 20 39 39 2e 30 0a 20 20  2,99.0)} 99.0.  
2840: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32  test_expr expr-2
2850: 2e 32 36 20 7b 72 31 3d 31 65 33 30 30 2c 20 72  .26 {r1=1e300, r
2860: 32 3d 31 65 33 30 30 7d 20 7b 63 6f 61 6c 65 73  2=1e300} {coales
2870: 63 65 28 28 72 31 2a 72 32 29 2a 30 2e 30 2c 39  ce((r1*r2)*0.0,9
2880: 39 2e 30 29 7d 20 39 39 2e 30 0a 20 20 74 65 73  9.0)} 99.0.  tes
2890: 74 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 32 36  t_expr expr-2.26
28a0: 62 20 7b 72 31 3d 31 65 33 30 30 2c 20 72 32 3d  b {r1=1e300, r2=
28b0: 2d 31 65 33 30 30 7d 20 7b 63 6f 61 6c 65 73 63  -1e300} {coalesc
28c0: 65 28 28 72 31 2a 72 32 29 2a 30 2e 30 2c 39 39  e((r1*r2)*0.0,99
28d0: 2e 30 29 7d 20 39 39 2e 30 0a 20 20 74 65 73 74  .0)} 99.0.  test
28e0: 5f 65 78 70 72 20 65 78 70 72 2d 32 2e 32 37 20  _expr expr-2.27 
28f0: 7b 72 31 3d 31 2e 31 2c 20 72 32 3d 30 2e 30 7d  {r1=1.1, r2=0.0}
2900: 20 7b 72 31 2f 72 32 7d 20 7b 7b 7d 7d 0a 20 20   {r1/r2} {{}}.  
2910: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 32  test_expr expr-2
2920: 2e 32 38 20 7b 72 31 3d 31 2e 31 2c 20 72 32 3d  .28 {r1=1.1, r2=
2930: 30 2e 30 7d 20 7b 72 31 25 72 32 7d 20 7b 7b 7d  0.0} {r1%r2} {{}
2940: 7d 0a 7d 0a 0a 74 65 73 74 5f 65 78 70 72 20 65  }.}..test_expr e
2950: 78 70 72 2d 33 2e 31 20 7b 74 31 3d 27 61 62 63  xpr-3.1 {t1='abc
2960: 27 2c 20 74 32 3d 27 78 79 7a 27 7d 20 7b 74 31  ', t2='xyz'} {t1
2970: 3c 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72  <t2} 1.test_expr
2980: 20 65 78 70 72 2d 33 2e 32 20 7b 74 31 3d 27 78   expr-3.2 {t1='x
2990: 79 7a 27 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b  yz', t2='abc'} {
29a0: 74 31 3c 74 32 7d 20 30 0a 74 65 73 74 5f 65 78  t1<t2} 0.test_ex
29b0: 70 72 20 65 78 70 72 2d 33 2e 33 20 7b 74 31 3d  pr expr-3.3 {t1=
29c0: 27 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27 7d  'abc', t2='abc'}
29d0: 20 7b 74 31 3c 74 32 7d 20 30 0a 74 65 73 74 5f   {t1<t2} 0.test_
29e0: 65 78 70 72 20 65 78 70 72 2d 33 2e 34 20 7b 74  expr expr-3.4 {t
29f0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 78 79 7a  1='abc', t2='xyz
2a00: 27 7d 20 7b 74 31 3c 3d 74 32 7d 20 31 0a 74 65  '} {t1<=t2} 1.te
2a10: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e 35  st_expr expr-3.5
2a20: 20 7b 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d 27   {t1='xyz', t2='
2a30: 61 62 63 27 7d 20 7b 74 31 3c 3d 74 32 7d 20 30  abc'} {t1<=t2} 0
2a40: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
2a50: 33 2e 36 20 7b 74 31 3d 27 61 62 63 27 2c 20 74  3.6 {t1='abc', t
2a60: 32 3d 27 61 62 63 27 7d 20 7b 74 31 3c 3d 74 32  2='abc'} {t1<=t2
2a70: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
2a80: 70 72 2d 33 2e 37 20 7b 74 31 3d 27 61 62 63 27  pr-3.7 {t1='abc'
2a90: 2c 20 74 32 3d 27 78 79 7a 27 7d 20 7b 74 31 3e  , t2='xyz'} {t1>
2aa0: 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  t2} 0.test_expr 
2ab0: 65 78 70 72 2d 33 2e 38 20 7b 74 31 3d 27 78 79  expr-3.8 {t1='xy
2ac0: 7a 27 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b 74  z', t2='abc'} {t
2ad0: 31 3e 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  1>t2} 1.test_exp
2ae0: 72 20 65 78 70 72 2d 33 2e 39 20 7b 74 31 3d 27  r expr-3.9 {t1='
2af0: 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27 7d 20  abc', t2='abc'} 
2b00: 7b 74 31 3e 74 32 7d 20 30 0a 74 65 73 74 5f 65  {t1>t2} 0.test_e
2b10: 78 70 72 20 65 78 70 72 2d 33 2e 31 30 20 7b 74  xpr expr-3.10 {t
2b20: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 78 79 7a  1='abc', t2='xyz
2b30: 27 7d 20 7b 74 31 3e 3d 74 32 7d 20 30 0a 74 65  '} {t1>=t2} 0.te
2b40: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e 31  st_expr expr-3.1
2b50: 31 20 7b 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d  1 {t1='xyz', t2=
2b60: 27 61 62 63 27 7d 20 7b 74 31 3e 3d 74 32 7d 20  'abc'} {t1>=t2} 
2b70: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
2b80: 2d 33 2e 31 32 20 7b 74 31 3d 27 61 62 63 27 2c  -3.12 {t1='abc',
2b90: 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 3e 3d   t2='abc'} {t1>=
2ba0: 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  t2} 1.test_expr 
2bb0: 65 78 70 72 2d 33 2e 31 33 20 7b 74 31 3d 27 61  expr-3.13 {t1='a
2bc0: 62 63 27 2c 20 74 32 3d 27 78 79 7a 27 7d 20 7b  bc', t2='xyz'} {
2bd0: 74 31 3d 74 32 7d 20 30 0a 74 65 73 74 5f 65 78  t1=t2} 0.test_ex
2be0: 70 72 20 65 78 70 72 2d 33 2e 31 34 20 7b 74 31  pr expr-3.14 {t1
2bf0: 3d 27 78 79 7a 27 2c 20 74 32 3d 27 61 62 63 27  ='xyz', t2='abc'
2c00: 7d 20 7b 74 31 3d 74 32 7d 20 30 0a 74 65 73 74  } {t1=t2} 0.test
2c10: 5f 65 78 70 72 20 65 78 70 72 2d 33 2e 31 35 20  _expr expr-3.15 
2c20: 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61  {t1='abc', t2='a
2c30: 62 63 27 7d 20 7b 74 31 3d 74 32 7d 20 31 0a 74  bc'} {t1=t2} 1.t
2c40: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e  est_expr expr-3.
2c50: 31 36 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  16 {t1='abc', t2
2c60: 3d 27 78 79 7a 27 7d 20 7b 74 31 3d 3d 74 32 7d  ='xyz'} {t1==t2}
2c70: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
2c80: 72 2d 33 2e 31 37 20 7b 74 31 3d 27 78 79 7a 27  r-3.17 {t1='xyz'
2c90: 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 3d  , t2='abc'} {t1=
2ca0: 3d 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  =t2} 0.test_expr
2cb0: 20 65 78 70 72 2d 33 2e 31 38 20 7b 74 31 3d 27   expr-3.18 {t1='
2cc0: 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27 7d 20  abc', t2='abc'} 
2cd0: 7b 74 31 3d 3d 74 32 7d 20 31 0a 74 65 73 74 5f  {t1==t2} 1.test_
2ce0: 65 78 70 72 20 65 78 70 72 2d 33 2e 31 39 20 7b  expr expr-3.19 {
2cf0: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 78 79  t1='abc', t2='xy
2d00: 7a 27 7d 20 7b 74 31 3c 3e 74 32 7d 20 31 0a 74  z'} {t1<>t2} 1.t
2d10: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e  est_expr expr-3.
2d20: 32 30 20 7b 74 31 3d 27 78 79 7a 27 2c 20 74 32  20 {t1='xyz', t2
2d30: 3d 27 61 62 63 27 7d 20 7b 74 31 3c 3e 74 32 7d  ='abc'} {t1<>t2}
2d40: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
2d50: 72 2d 33 2e 32 31 20 7b 74 31 3d 27 61 62 63 27  r-3.21 {t1='abc'
2d60: 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 3c  , t2='abc'} {t1<
2d70: 3e 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72  >t2} 0.test_expr
2d80: 20 65 78 70 72 2d 33 2e 32 32 20 7b 74 31 3d 27   expr-3.22 {t1='
2d90: 61 62 63 27 2c 20 74 32 3d 27 78 79 7a 27 7d 20  abc', t2='xyz'} 
2da0: 7b 74 31 21 3d 74 32 7d 20 31 0a 74 65 73 74 5f  {t1!=t2} 1.test_
2db0: 65 78 70 72 20 65 78 70 72 2d 33 2e 32 33 20 7b  expr expr-3.23 {
2dc0: 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d 27 61 62  t1='xyz', t2='ab
2dd0: 63 27 7d 20 7b 74 31 21 3d 74 32 7d 20 31 0a 74  c'} {t1!=t2} 1.t
2de0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e  est_expr expr-3.
2df0: 32 34 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  24 {t1='abc', t2
2e00: 3d 27 61 62 63 27 7d 20 7b 74 31 21 3d 74 32 7d  ='abc'} {t1!=t2}
2e10: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
2e20: 72 2d 33 2e 32 35 20 7b 74 31 3d 4e 55 4c 4c 2c  r-3.25 {t1=NULL,
2e30: 20 74 32 3d 27 68 69 27 7d 20 7b 74 31 20 69 73   t2='hi'} {t1 is
2e40: 6e 75 6c 6c 7d 20 31 0a 74 65 73 74 5f 65 78 70  null} 1.test_exp
2e50: 72 20 65 78 70 72 2d 33 2e 32 35 62 20 7b 74 31  r expr-3.25b {t1
2e60: 3d 4e 55 4c 4c 2c 20 74 32 3d 27 68 69 27 7d 20  =NULL, t2='hi'} 
2e70: 7b 74 31 20 69 73 20 6e 75 6c 6c 7d 20 31 0a 74  {t1 is null} 1.t
2e80: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33 2e  est_expr expr-3.
2e90: 32 36 20 7b 74 31 3d 4e 55 4c 4c 2c 20 74 32 3d  26 {t1=NULL, t2=
2ea0: 27 68 69 27 7d 20 7b 74 32 20 69 73 6e 75 6c 6c  'hi'} {t2 isnull
2eb0: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
2ec0: 70 72 2d 33 2e 32 37 20 7b 74 31 3d 4e 55 4c 4c  pr-3.27 {t1=NULL
2ed0: 2c 20 74 32 3d 27 68 69 27 7d 20 7b 74 31 20 6e  , t2='hi'} {t1 n
2ee0: 6f 74 6e 75 6c 6c 7d 20 30 0a 74 65 73 74 5f 65  otnull} 0.test_e
2ef0: 78 70 72 20 65 78 70 72 2d 33 2e 32 38 20 7b 74  xpr expr-3.28 {t
2f00: 31 3d 4e 55 4c 4c 2c 20 74 32 3d 27 68 69 27 7d  1=NULL, t2='hi'}
2f10: 20 7b 74 32 20 6e 6f 74 6e 75 6c 6c 7d 20 31 0a   {t2 notnull} 1.
2f20: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 33  test_expr expr-3
2f30: 2e 32 38 62 20 7b 74 31 3d 4e 55 4c 4c 2c 20 74  .28b {t1=NULL, t
2f40: 32 3d 27 68 69 27 7d 20 7b 74 32 20 69 73 20 6e  2='hi'} {t2 is n
2f50: 6f 74 20 6e 75 6c 6c 7d 20 31 0a 74 65 73 74 5f  ot null} 1.test_
2f60: 65 78 70 72 20 65 78 70 72 2d 33 2e 32 39 20 7b  expr expr-3.29 {
2f70: 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d 27 61 62  t1='xyz', t2='ab
2f80: 63 27 7d 20 7b 74 31 7c 7c 74 32 7d 20 7b 78 79  c'} {t1||t2} {xy
2f90: 7a 61 62 63 7d 0a 74 65 73 74 5f 65 78 70 72 20  zabc}.test_expr 
2fa0: 65 78 70 72 2d 33 2e 33 30 20 7b 74 31 3d 4e 55  expr-3.30 {t1=NU
2fb0: 4c 4c 2c 20 74 32 3d 27 61 62 63 27 7d 20 7b 74  LL, t2='abc'} {t
2fc0: 31 7c 7c 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74  1||t2} {{}}.test
2fd0: 5f 65 78 70 72 20 65 78 70 72 2d 33 2e 33 31 20  _expr expr-3.31 
2fe0: 7b 74 31 3d 27 78 79 7a 27 2c 20 74 32 3d 4e 55  {t1='xyz', t2=NU
2ff0: 4c 4c 7d 20 7b 74 31 7c 7c 74 32 7d 20 7b 7b 7d  LL} {t1||t2} {{}
3000: 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  }.test_expr expr
3010: 2d 33 2e 33 32 20 7b 74 31 3d 27 78 79 7a 27 2c  -3.32 {t1='xyz',
3020: 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 7c 7c   t2='abc'} {t1||
3030: 27 20 68 69 20 27 7c 7c 74 32 7d 20 7b 7b 78 79  ' hi '||t2} {{xy
3040: 7a 20 68 69 20 61 62 63 7d 7d 0a 74 65 73 74 5f  z hi abc}}.test_
3050: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 33 20 7b  expr epxr-3.33 {
3060: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
3070: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 31 3c  L} {coalesce(t1<
3080: 74 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  t2,99)} 99.test_
3090: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 34 20 7b  expr epxr-3.34 {
30a0: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
30b0: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 32 3c  L} {coalesce(t2<
30c0: 74 31 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  t1,99)} 99.test_
30d0: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 35 20 7b  expr epxr-3.35 {
30e0: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
30f0: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 31 3e  L} {coalesce(t1>
3100: 74 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  t2,99)} 99.test_
3110: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 36 20 7b  expr epxr-3.36 {
3120: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
3130: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 32 3e  L} {coalesce(t2>
3140: 74 31 2c 39 39 29 7d 20 39 39 0a 74 65 73 74 5f  t1,99)} 99.test_
3150: 65 78 70 72 20 65 70 78 72 2d 33 2e 33 37 20 7b  expr epxr-3.37 {
3160: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c  t1='abc', t2=NUL
3170: 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 31 3c  L} {coalesce(t1<
3180: 3d 74 32 2c 39 39 29 7d 20 39 39 0a 74 65 73 74  =t2,99)} 99.test
3190: 5f 65 78 70 72 20 65 70 78 72 2d 33 2e 33 38 20  _expr epxr-3.38 
31a0: 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55  {t1='abc', t2=NU
31b0: 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74 32  LL} {coalesce(t2
31c0: 3c 3d 74 31 2c 39 39 29 7d 20 39 39 0a 74 65 73  <=t1,99)} 99.tes
31d0: 74 5f 65 78 70 72 20 65 70 78 72 2d 33 2e 33 39  t_expr epxr-3.39
31e0: 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e   {t1='abc', t2=N
31f0: 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28 74  ULL} {coalesce(t
3200: 31 3e 3d 74 32 2c 39 39 29 7d 20 39 39 0a 74 65  1>=t2,99)} 99.te
3210: 73 74 5f 65 78 70 72 20 65 70 78 72 2d 33 2e 34  st_expr epxr-3.4
3220: 30 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  0 {t1='abc', t2=
3230: 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65 28  NULL} {coalesce(
3240: 74 32 3e 3d 74 31 2c 39 39 29 7d 20 39 39 0a 74  t2>=t1,99)} 99.t
3250: 65 73 74 5f 65 78 70 72 20 65 70 78 72 2d 33 2e  est_expr epxr-3.
3260: 34 31 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  41 {t1='abc', t2
3270: 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63 65  =NULL} {coalesce
3280: 28 74 31 3d 3d 74 32 2c 39 39 29 7d 20 39 39 0a  (t1==t2,99)} 99.
3290: 74 65 73 74 5f 65 78 70 72 20 65 70 78 72 2d 33  test_expr epxr-3
32a0: 2e 34 32 20 7b 74 31 3d 27 61 62 63 27 2c 20 74  .42 {t1='abc', t
32b0: 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73 63  2=NULL} {coalesc
32c0: 65 28 74 32 3d 3d 74 31 2c 39 39 29 7d 20 39 39  e(t2==t1,99)} 99
32d0: 0a 74 65 73 74 5f 65 78 70 72 20 65 70 78 72 2d  .test_expr epxr-
32e0: 33 2e 34 33 20 7b 74 31 3d 27 61 62 63 27 2c 20  3.43 {t1='abc', 
32f0: 74 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65 73  t2=NULL} {coales
3300: 63 65 28 74 31 21 3d 74 32 2c 39 39 29 7d 20 39  ce(t1!=t2,99)} 9
3310: 39 0a 74 65 73 74 5f 65 78 70 72 20 65 70 78 72  9.test_expr epxr
3320: 2d 33 2e 34 34 20 7b 74 31 3d 27 61 62 63 27 2c  -3.44 {t1='abc',
3330: 20 74 32 3d 4e 55 4c 4c 7d 20 7b 63 6f 61 6c 65   t2=NULL} {coale
3340: 73 63 65 28 74 32 21 3d 74 31 2c 39 39 29 7d 20  sce(t2!=t1,99)} 
3350: 39 39 0a 0a 74 65 73 74 5f 65 78 70 72 20 65 78  99..test_expr ex
3360: 70 72 2d 34 2e 31 20 7b 74 31 3d 27 61 62 63 27  pr-4.1 {t1='abc'
3370: 2c 20 74 32 3d 27 41 62 63 27 7d 20 7b 74 31 3c  , t2='Abc'} {t1<
3380: 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  t2} 0.test_expr 
3390: 65 78 70 72 2d 34 2e 32 20 7b 74 31 3d 27 61 62  expr-4.2 {t1='ab
33a0: 63 27 2c 20 74 32 3d 27 41 62 63 27 7d 20 7b 74  c', t2='Abc'} {t
33b0: 31 3e 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  1>t2} 1.test_exp
33c0: 72 20 65 78 70 72 2d 34 2e 33 20 7b 74 31 3d 27  r expr-4.3 {t1='
33d0: 61 62 63 27 2c 20 74 32 3d 27 42 62 63 27 7d 20  abc', t2='Bbc'} 
33e0: 7b 74 31 3c 74 32 7d 20 30 0a 74 65 73 74 5f 65  {t1<t2} 0.test_e
33f0: 78 70 72 20 65 78 70 72 2d 34 2e 34 20 7b 74 31  xpr expr-4.4 {t1
3400: 3d 27 61 62 63 27 2c 20 74 32 3d 27 42 62 63 27  ='abc', t2='Bbc'
3410: 7d 20 7b 74 31 3e 74 32 7d 20 31 0a 74 65 73 74  } {t1>t2} 1.test
3420: 5f 65 78 70 72 20 65 78 70 72 2d 34 2e 35 20 7b  _expr expr-4.5 {
3430: 74 31 3d 27 30 27 2c 20 74 32 3d 27 30 2e 30 27  t1='0', t2='0.0'
3440: 7d 20 7b 74 31 3d 3d 74 32 7d 20 30 0a 74 65 73  } {t1==t2} 0.tes
3450: 74 5f 65 78 70 72 20 65 78 70 72 2d 34 2e 36 20  t_expr expr-4.6 
3460: 7b 74 31 3d 27 30 2e 30 30 30 27 2c 20 74 32 3d  {t1='0.000', t2=
3470: 27 30 2e 30 27 7d 20 7b 74 31 3d 3d 74 32 7d 20  '0.0'} {t1==t2} 
3480: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
3490: 2d 34 2e 37 20 7b 74 31 3d 27 20 30 2e 30 30 30  -4.7 {t1=' 0.000
34a0: 27 2c 20 74 32 3d 27 20 30 2e 30 27 7d 20 7b 74  ', t2=' 0.0'} {t
34b0: 31 3d 3d 74 32 7d 20 30 0a 74 65 73 74 5f 65 78  1==t2} 0.test_ex
34c0: 70 72 20 65 78 70 72 2d 34 2e 38 20 7b 74 31 3d  pr expr-4.8 {t1=
34d0: 27 30 2e 30 27 2c 20 74 32 3d 27 61 62 63 27 7d  '0.0', t2='abc'}
34e0: 20 7b 74 31 3c 74 32 7d 20 31 0a 74 65 73 74 5f   {t1<t2} 1.test_
34f0: 65 78 70 72 20 65 78 70 72 2d 34 2e 39 20 7b 74  expr expr-4.9 {t
3500: 31 3d 27 30 2e 30 27 2c 20 74 32 3d 27 61 62 63  1='0.0', t2='abc
3510: 27 7d 20 7b 74 31 3d 3d 74 32 7d 20 30 0a 0a 69  '} {t1==t2} 0..i
3520: 66 63 61 70 61 62 6c 65 20 66 6c 6f 61 74 69 6e  fcapable floatin
3530: 67 70 6f 69 6e 74 20 7b 0a 20 20 74 65 73 74 5f  gpoint {.  test_
3540: 65 78 70 72 20 65 78 70 72 2d 34 2e 31 30 20 7b  expr expr-4.10 {
3550: 72 31 3d 27 30 2e 30 27 2c 20 72 32 3d 27 61 62  r1='0.0', r2='ab
3560: 63 27 7d 20 7b 72 31 3e 72 32 7d 20 30 0a 20 20  c'} {r1>r2} 0.  
3570: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 34  test_expr expr-4
3580: 2e 31 31 20 7b 72 31 3d 27 61 62 63 27 2c 20 72  .11 {r1='abc', r
3590: 32 3d 27 41 62 63 27 7d 20 7b 72 31 3c 72 32 7d  2='Abc'} {r1<r2}
35a0: 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   0.  test_expr e
35b0: 78 70 72 2d 34 2e 31 32 20 7b 72 31 3d 27 61 62  xpr-4.12 {r1='ab
35c0: 63 27 2c 20 72 32 3d 27 41 62 63 27 7d 20 7b 72  c', r2='Abc'} {r
35d0: 31 3e 72 32 7d 20 31 0a 20 20 74 65 73 74 5f 65  1>r2} 1.  test_e
35e0: 78 70 72 20 65 78 70 72 2d 34 2e 31 33 20 7b 72  xpr expr-4.13 {r
35f0: 31 3d 27 61 62 63 27 2c 20 72 32 3d 27 42 62 63  1='abc', r2='Bbc
3600: 27 7d 20 7b 72 31 3c 72 32 7d 20 30 0a 20 20 74  '} {r1<r2} 0.  t
3610: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 34 2e  est_expr expr-4.
3620: 31 34 20 7b 72 31 3d 27 61 62 63 27 2c 20 72 32  14 {r1='abc', r2
3630: 3d 27 42 62 63 27 7d 20 7b 72 31 3e 72 32 7d 20  ='Bbc'} {r1>r2} 
3640: 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78  1.  test_expr ex
3650: 70 72 2d 34 2e 31 35 20 7b 72 31 3d 27 30 27 2c  pr-4.15 {r1='0',
3660: 20 72 32 3d 27 30 2e 30 27 7d 20 7b 72 31 3d 3d   r2='0.0'} {r1==
3670: 72 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70  r2} 1.  test_exp
3680: 72 20 65 78 70 72 2d 34 2e 31 36 20 7b 72 31 3d  r expr-4.16 {r1=
3690: 27 30 2e 30 30 30 27 2c 20 72 32 3d 27 30 2e 30  '0.000', r2='0.0
36a0: 27 7d 20 7b 72 31 3d 3d 72 32 7d 20 31 0a 20 20  '} {r1==r2} 1.  
36b0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 34  test_expr expr-4
36c0: 2e 31 37 20 7b 72 31 3d 27 20 30 2e 30 30 30 27  .17 {r1=' 0.000'
36d0: 2c 20 72 32 3d 27 20 30 2e 30 27 7d 20 7b 72 31  , r2=' 0.0'} {r1
36e0: 3d 3d 72 32 7d 20 31 0a 20 20 74 65 73 74 5f 65  ==r2} 1.  test_e
36f0: 78 70 72 20 65 78 70 72 2d 34 2e 31 38 20 7b 72  xpr expr-4.18 {r
3700: 31 3d 27 30 2e 30 27 2c 20 72 32 3d 27 61 62 63  1='0.0', r2='abc
3710: 27 7d 20 7b 72 31 3c 72 32 7d 20 31 0a 20 20 74  '} {r1<r2} 1.  t
3720: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 34 2e  est_expr expr-4.
3730: 31 39 20 7b 72 31 3d 27 30 2e 30 27 2c 20 72 32  19 {r1='0.0', r2
3740: 3d 27 61 62 63 27 7d 20 7b 72 31 3d 3d 72 32 7d  ='abc'} {r1==r2}
3750: 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   0.  test_expr e
3760: 78 70 72 2d 34 2e 32 30 20 7b 72 31 3d 27 30 2e  xpr-4.20 {r1='0.
3770: 30 27 2c 20 72 32 3d 27 61 62 63 27 7d 20 7b 72  0', r2='abc'} {r
3780: 31 3e 72 32 7d 20 30 0a 7d 0a 0a 23 20 43 53 4c  1>r2} 0.}..# CSL
3790: 20 69 73 20 74 72 75 65 20 69 66 20 4c 49 4b 45   is true if LIKE
37a0: 20 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69   is case sensiti
37b0: 76 65 20 61 6e 64 20 66 61 6c 73 65 20 69 66 20  ve and false if 
37c0: 6e 6f 74 2e 0a 23 20 4e 43 53 4c 20 69 73 20 74  not..# NCSL is t
37d0: 68 65 20 6f 70 70 6f 73 69 74 65 2e 20 20 55 73  he opposite.  Us
37e0: 65 20 74 68 65 73 65 20 76 61 72 69 61 62 6c 65  e these variable
37f0: 73 20 61 73 20 74 68 65 20 72 65 73 75 6c 74 0a  s as the result.
3800: 23 20 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 73 20  # on operations 
3810: 77 68 65 72 65 20 63 61 73 65 20 6d 61 6b 65 73  where case makes
3820: 20 61 20 64 69 66 66 65 72 65 6e 63 65 2e 0a 73   a difference..s
3830: 65 74 20 43 53 4c 20 24 73 71 6c 69 74 65 5f 6f  et CSL $sqlite_o
3840: 70 74 69 6f 6e 73 28 63 61 73 65 73 65 6e 73 69  ptions(casesensi
3850: 74 69 76 65 6c 69 6b 65 29 0a 73 65 74 20 4e 43  tivelike).set NC
3860: 53 4c 20 5b 65 78 70 72 20 7b 21 24 43 53 4c 7d  SL [expr {!$CSL}
3870: 5d 0a 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70  ]..test_expr exp
3880: 72 2d 35 2e 31 20 7b 74 31 3d 27 61 62 63 27 2c  r-5.1 {t1='abc',
3890: 20 74 32 3d 27 78 79 7a 27 7d 20 7b 74 31 20 4c   t2='xyz'} {t1 L
38a0: 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  IKE t2} 0.test_e
38b0: 78 70 72 20 65 78 70 72 2d 35 2e 32 61 20 7b 74  xpr expr-5.2a {t
38c0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 62 63  1='abc', t2='abc
38d0: 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20  '} {t1 LIKE t2} 
38e0: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
38f0: 2d 35 2e 32 62 20 7b 74 31 3d 27 61 62 63 27 2c  -5.2b {t1='abc',
3900: 20 74 32 3d 27 41 42 43 27 7d 20 7b 74 31 20 4c   t2='ABC'} {t1 L
3910: 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 74 65  IKE t2} $NCSL.te
3920: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 33  st_expr expr-5.3
3930: 61 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  a {t1='abc', t2=
3940: 27 61 5f 63 27 7d 20 7b 74 31 20 4c 49 4b 45 20  'a_c'} {t1 LIKE 
3950: 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  t2} 1.test_expr 
3960: 65 78 70 72 2d 35 2e 33 62 20 7b 74 31 3d 27 61  expr-5.3b {t1='a
3970: 62 63 27 2c 20 74 32 3d 27 41 5f 43 27 7d 20 7b  bc', t2='A_C'} {
3980: 74 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53  t1 LIKE t2} $NCS
3990: 4c 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  L.test_expr expr
39a0: 2d 35 2e 34 20 7b 74 31 3d 27 61 62 63 27 2c 20  -5.4 {t1='abc', 
39b0: 74 32 3d 27 61 62 63 5f 27 7d 20 7b 74 31 20 4c  t2='abc_'} {t1 L
39c0: 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  IKE t2} 0.test_e
39d0: 78 70 72 20 65 78 70 72 2d 35 2e 35 61 20 7b 74  xpr expr-5.5a {t
39e0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 25 63  1='abc', t2='a%c
39f0: 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20  '} {t1 LIKE t2} 
3a00: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
3a10: 2d 35 2e 35 62 20 7b 74 31 3d 27 61 62 63 27 2c  -5.5b {t1='abc',
3a20: 20 74 32 3d 27 41 25 43 27 7d 20 7b 74 31 20 4c   t2='A%C'} {t1 L
3a30: 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 74 65  IKE t2} $NCSL.te
3a40: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 35  st_expr expr-5.5
3a50: 63 20 7b 74 31 3d 27 61 62 64 63 27 2c 20 74 32  c {t1='abdc', t2
3a60: 3d 27 61 25 63 27 7d 20 7b 74 31 20 4c 49 4b 45  ='a%c'} {t1 LIKE
3a70: 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72   t2} 1.test_expr
3a80: 20 65 78 70 72 2d 35 2e 35 64 20 7b 74 31 3d 27   expr-5.5d {t1='
3a90: 61 63 27 2c 20 74 32 3d 27 61 25 63 27 7d 20 7b  ac', t2='a%c'} {
3aa0: 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 74 65  t1 LIKE t2} 1.te
3ab0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 35  st_expr expr-5.5
3ac0: 65 20 7b 74 31 3d 27 61 63 27 2c 20 74 32 3d 27  e {t1='ac', t2='
3ad0: 41 25 43 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  A%C'} {t1 LIKE t
3ae0: 32 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65 78  2} $NCSL.test_ex
3af0: 70 72 20 65 78 70 72 2d 35 2e 36 61 20 7b 74 31  pr expr-5.6a {t1
3b00: 3d 27 61 62 78 79 7a 7a 79 63 27 2c 20 74 32 3d  ='abxyzzyc', t2=
3b10: 27 61 25 63 27 7d 20 7b 74 31 20 4c 49 4b 45 20  'a%c'} {t1 LIKE 
3b20: 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  t2} 1.test_expr 
3b30: 65 78 70 72 2d 35 2e 36 62 20 7b 74 31 3d 27 61  expr-5.6b {t1='a
3b40: 62 78 79 7a 7a 79 63 27 2c 20 74 32 3d 27 41 25  bxyzzyc', t2='A%
3b50: 43 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  C'} {t1 LIKE t2}
3b60: 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65 78 70 72   $NCSL.test_expr
3b70: 20 65 78 70 72 2d 35 2e 37 61 20 7b 74 31 3d 27   expr-5.7a {t1='
3b80: 61 62 78 79 7a 7a 79 27 2c 20 74 32 3d 27 61 25  abxyzzy', t2='a%
3b90: 63 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  c'} {t1 LIKE t2}
3ba0: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
3bb0: 72 2d 35 2e 37 62 20 7b 74 31 3d 27 61 62 78 79  r-5.7b {t1='abxy
3bc0: 7a 7a 79 27 2c 20 74 32 3d 27 41 25 43 27 7d 20  zzy', t2='A%C'} 
3bd0: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 30 0a 74  {t1 LIKE t2} 0.t
3be0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
3bf0: 38 61 20 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63  8a {t1='abxyzzyc
3c00: 78 27 2c 20 74 32 3d 27 61 25 63 27 7d 20 7b 74  x', t2='a%c'} {t
3c10: 31 20 4c 49 4b 45 20 74 32 7d 20 30 0a 74 65 73  1 LIKE t2} 0.tes
3c20: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 38 62  t_expr expr-5.8b
3c30: 20 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63 79 27   {t1='abxyzzycy'
3c40: 2c 20 74 32 3d 27 61 25 63 78 27 7d 20 7b 74 31  , t2='a%cx'} {t1
3c50: 20 4c 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74   LIKE t2} 0.test
3c60: 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 38 63 20  _expr expr-5.8c 
3c70: 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63 78 27 2c  {t1='abxyzzycx',
3c80: 20 74 32 3d 27 41 25 43 27 7d 20 7b 74 31 20 4c   t2='A%C'} {t1 L
3c90: 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  IKE t2} 0.test_e
3ca0: 78 70 72 20 65 78 70 72 2d 35 2e 38 64 20 7b 74  xpr expr-5.8d {t
3cb0: 31 3d 27 61 62 78 79 7a 7a 79 63 79 27 2c 20 74  1='abxyzzycy', t
3cc0: 32 3d 27 41 25 43 58 27 7d 20 7b 74 31 20 4c 49  2='A%CX'} {t1 LI
3cd0: 4b 45 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78  KE t2} 0.test_ex
3ce0: 70 72 20 65 78 70 72 2d 35 2e 39 61 20 7b 74 31  pr expr-5.9a {t1
3cf0: 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 25 5f 63  ='abc', t2='a%_c
3d00: 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20  '} {t1 LIKE t2} 
3d10: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
3d20: 2d 35 2e 39 62 20 7b 74 31 3d 27 61 63 27 2c 20  -5.9b {t1='ac', 
3d30: 74 32 3d 27 61 25 5f 63 27 7d 20 7b 74 31 20 4c  t2='a%_c'} {t1 L
3d40: 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  IKE t2} 0.test_e
3d50: 78 70 72 20 65 78 70 72 2d 35 2e 39 63 20 7b 74  xpr expr-5.9c {t
3d60: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 41 25 5f  1='abc', t2='A%_
3d70: 43 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  C'} {t1 LIKE t2}
3d80: 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65 78 70 72   $NCSL.test_expr
3d90: 20 65 78 70 72 2d 35 2e 39 64 20 7b 74 31 3d 27   expr-5.9d {t1='
3da0: 61 63 27 2c 20 74 32 3d 27 41 25 5f 43 27 7d 20  ac', t2='A%_C'} 
3db0: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 30 0a 74  {t1 LIKE t2} 0.t
3dc0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
3dd0: 31 30 61 20 7b 74 31 3d 27 61 62 78 79 7a 7a 79  10a {t1='abxyzzy
3de0: 63 27 2c 20 74 32 3d 27 61 25 5f 63 27 7d 20 7b  c', t2='a%_c'} {
3df0: 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 74 65  t1 LIKE t2} 1.te
3e00: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31  st_expr expr-5.1
3e10: 30 62 20 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63  0b {t1='abxyzzyc
3e20: 27 2c 20 74 32 3d 27 41 25 5f 43 27 7d 20 7b 74  ', t2='A%_C'} {t
3e30: 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c  1 LIKE t2} $NCSL
3e40: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
3e50: 35 2e 31 31 20 7b 74 31 3d 27 61 62 63 27 2c 20  5.11 {t1='abc', 
3e60: 74 32 3d 27 78 79 7a 27 7d 20 7b 74 31 20 4e 4f  t2='xyz'} {t1 NO
3e70: 54 20 4c 49 4b 45 20 74 32 7d 20 31 0a 74 65 73  T LIKE t2} 1.tes
3e80: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31 32  t_expr expr-5.12
3e90: 61 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  a {t1='abc', t2=
3ea0: 27 61 62 63 27 7d 20 7b 74 31 20 4e 4f 54 20 4c  'abc'} {t1 NOT L
3eb0: 49 4b 45 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  IKE t2} 0.test_e
3ec0: 78 70 72 20 65 78 70 72 2d 35 2e 31 32 62 20 7b  xpr expr-5.12b {
3ed0: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 41 42  t1='abc', t2='AB
3ee0: 43 27 7d 20 7b 74 31 20 4e 4f 54 20 4c 49 4b 45  C'} {t1 NOT LIKE
3ef0: 20 74 32 7d 20 24 43 53 4c 0a 74 65 73 74 5f 65   t2} $CSL.test_e
3f00: 78 70 72 20 65 78 70 72 2d 35 2e 31 33 20 20 7b  xpr expr-5.13  {
3f10: 74 31 3d 27 41 27 7d 20 20 7b 74 31 20 4c 49 4b  t1='A'}  {t1 LIK
3f20: 45 20 27 41 25 5f 27 7d 20 30 0a 74 65 73 74 5f  E 'A%_'} 0.test_
3f30: 65 78 70 72 20 65 78 70 72 2d 35 2e 31 34 20 20  expr expr-5.14  
3f40: 7b 74 31 3d 27 41 42 27 7d 20 7b 74 31 20 4c 49  {t1='AB'} {t1 LI
3f50: 4b 45 20 27 41 25 62 27 20 45 53 43 41 50 45 20  KE 'A%b' ESCAPE 
3f60: 27 62 27 7d 20 30 0a 0a 23 20 54 68 65 20 66 6f  'b'} 0..# The fo
3f70: 6c 6c 6f 77 69 6e 67 20 74 65 73 74 73 20 6f 6e  llowing tests on
3f80: 6c 79 20 77 6f 72 6b 20 6f 6e 20 76 65 72 73 69  ly work on versi
3f90: 6f 6e 73 20 6f 66 20 54 43 4c 20 74 68 61 74 20  ons of TCL that 
3fa0: 73 75 70 70 6f 72 74 20 55 6e 69 63 6f 64 65 0a  support Unicode.
3fb0: 23 0a 69 66 20 7b 22 5c 75 31 32 33 34 22 21 3d  #.if {"\u1234"!=
3fc0: 22 75 31 32 33 34 22 7d 20 7b 0a 20 20 74 65 73  "u1234"} {.  tes
3fd0: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31 33  t_expr expr-5.13
3fe0: 61 20 22 74 31 3d 27 61 5c 75 30 30 38 30 63 27  a "t1='a\u0080c'
3ff0: 2c 20 74 32 3d 27 61 5f 63 27 22 20 7b 74 31 20  , t2='a_c'" {t1 
4000: 4c 49 4b 45 20 74 32 7d 20 31 0a 20 20 74 65 73  LIKE t2} 1.  tes
4010: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31 33  t_expr expr-5.13
4020: 62 20 22 74 31 3d 27 61 5c 75 30 30 38 30 63 27  b "t1='a\u0080c'
4030: 2c 20 74 32 3d 27 41 5f 43 27 22 20 7b 74 31 20  , t2='A_C'" {t1 
4040: 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 20  LIKE t2} $NCSL. 
4050: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
4060: 35 2e 31 34 61 20 22 74 31 3d 27 61 5c 75 30 37  5.14a "t1='a\u07
4070: 46 46 63 27 2c 20 74 32 3d 27 61 5f 63 27 22 20  FFc', t2='a_c'" 
4080: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 20  {t1 LIKE t2} 1. 
4090: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
40a0: 35 2e 31 34 62 20 22 74 31 3d 27 61 5c 75 30 37  5.14b "t1='a\u07
40b0: 46 46 63 27 2c 20 74 32 3d 27 41 5f 43 27 22 20  FFc', t2='A_C'" 
40c0: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e 43  {t1 LIKE t2} $NC
40d0: 53 4c 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65  SL.  test_expr e
40e0: 78 70 72 2d 35 2e 31 35 61 20 22 74 31 3d 27 61  xpr-5.15a "t1='a
40f0: 5c 75 30 38 30 30 63 27 2c 20 74 32 3d 27 61 5f  \u0800c', t2='a_
4100: 63 27 22 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  c'" {t1 LIKE t2}
4110: 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   1.  test_expr e
4120: 78 70 72 2d 35 2e 31 35 62 20 22 74 31 3d 27 61  xpr-5.15b "t1='a
4130: 5c 75 30 38 30 30 63 27 2c 20 74 32 3d 27 41 5f  \u0800c', t2='A_
4140: 43 27 22 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  C'" {t1 LIKE t2}
4150: 20 24 4e 43 53 4c 0a 20 20 74 65 73 74 5f 65 78   $NCSL.  test_ex
4160: 70 72 20 65 78 70 72 2d 35 2e 31 36 61 20 22 74  pr expr-5.16a "t
4170: 31 3d 27 61 5c 75 46 46 46 46 63 27 2c 20 74 32  1='a\uFFFFc', t2
4180: 3d 27 61 5f 63 27 22 20 7b 74 31 20 4c 49 4b 45  ='a_c'" {t1 LIKE
4190: 20 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78   t2} 1.  test_ex
41a0: 70 72 20 65 78 70 72 2d 35 2e 31 36 62 20 22 74  pr expr-5.16b "t
41b0: 31 3d 27 61 5c 75 46 46 46 46 63 27 2c 20 74 32  1='a\uFFFFc', t2
41c0: 3d 27 41 5f 43 27 22 20 7b 74 31 20 4c 49 4b 45  ='A_C'" {t1 LIKE
41d0: 20 74 32 7d 20 24 4e 43 53 4c 0a 20 20 74 65 73   t2} $NCSL.  tes
41e0: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 31 37  t_expr expr-5.17
41f0: 20 22 74 31 3d 27 61 5c 75 30 30 38 30 27 2c 20   "t1='a\u0080', 
4200: 74 32 3d 27 41 5f 5f 27 22 20 7b 74 31 20 4c 49  t2='A__'" {t1 LI
4210: 4b 45 20 74 32 7d 20 30 0a 20 20 74 65 73 74 5f  KE t2} 0.  test_
4220: 65 78 70 72 20 65 78 70 72 2d 35 2e 31 38 20 22  expr expr-5.18 "
4230: 74 31 3d 27 61 5c 75 30 37 46 46 27 2c 20 74 32  t1='a\u07FF', t2
4240: 3d 27 41 5f 5f 27 22 20 7b 74 31 20 4c 49 4b 45  ='A__'" {t1 LIKE
4250: 20 74 32 7d 20 30 0a 20 20 74 65 73 74 5f 65 78   t2} 0.  test_ex
4260: 70 72 20 65 78 70 72 2d 35 2e 31 39 20 22 74 31  pr expr-5.19 "t1
4270: 3d 27 61 5c 75 30 38 30 30 27 2c 20 74 32 3d 27  ='a\u0800', t2='
4280: 41 5f 5f 27 22 20 7b 74 31 20 4c 49 4b 45 20 74  A__'" {t1 LIKE t
4290: 32 7d 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72  2} 0.  test_expr
42a0: 20 65 78 70 72 2d 35 2e 32 30 20 22 74 31 3d 27   expr-5.20 "t1='
42b0: 61 5c 75 46 46 46 46 27 2c 20 74 32 3d 27 41 5f  a\uFFFF', t2='A_
42c0: 5f 27 22 20 7b 74 31 20 4c 49 4b 45 20 74 32 7d  _'" {t1 LIKE t2}
42d0: 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   0.  test_expr e
42e0: 78 70 72 2d 35 2e 32 31 61 20 22 74 31 3d 27 61  xpr-5.21a "t1='a
42f0: 78 5c 75 41 42 43 44 27 2c 20 74 32 3d 27 61 5f  x\uABCD', t2='a_
4300: 5c 75 41 42 43 44 27 22 20 7b 74 31 20 4c 49 4b  \uABCD'" {t1 LIK
4310: 45 20 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65  E t2} 1.  test_e
4320: 78 70 72 20 65 78 70 72 2d 35 2e 32 31 62 20 22  xpr expr-5.21b "
4330: 74 31 3d 27 61 78 5c 75 41 42 43 44 27 2c 20 74  t1='ax\uABCD', t
4340: 32 3d 27 41 5f 5c 75 41 42 43 44 27 22 20 7b 74  2='A_\uABCD'" {t
4350: 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c  1 LIKE t2} $NCSL
4360: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
4370: 72 2d 35 2e 32 32 61 20 22 74 31 3d 27 61 78 5c  r-5.22a "t1='ax\
4380: 75 31 32 33 34 27 2c 20 74 32 3d 27 61 25 5c 75  u1234', t2='a%\u
4390: 31 32 33 34 27 22 20 7b 74 31 20 4c 49 4b 45 20  1234'" {t1 LIKE 
43a0: 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70  t2} 1.  test_exp
43b0: 72 20 65 78 70 72 2d 35 2e 32 32 62 20 22 74 31  r expr-5.22b "t1
43c0: 3d 27 61 78 5c 75 31 32 33 34 27 2c 20 74 32 3d  ='ax\u1234', t2=
43d0: 27 41 25 5c 75 31 32 33 34 27 22 20 7b 74 31 20  'A%\u1234'" {t1 
43e0: 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 20  LIKE t2} $NCSL. 
43f0: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
4400: 35 2e 32 33 61 20 22 74 31 3d 27 61 78 5c 75 46  5.23a "t1='ax\uF
4410: 45 44 43 27 2c 20 74 32 3d 27 61 5f 25 27 22 20  EDC', t2='a_%'" 
4420: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 20  {t1 LIKE t2} 1. 
4430: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
4440: 35 2e 32 33 62 20 22 74 31 3d 27 61 78 5c 75 46  5.23b "t1='ax\uF
4450: 45 44 43 27 2c 20 74 32 3d 27 41 5f 25 27 22 20  EDC', t2='A_%'" 
4460: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 24 4e 43  {t1 LIKE t2} $NC
4470: 53 4c 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65  SL.  test_expr e
4480: 78 70 72 2d 35 2e 32 34 61 20 22 74 31 3d 27 61  xpr-5.24a "t1='a
4490: 78 5c 75 46 45 44 43 79 5c 75 46 45 44 43 27 2c  x\uFEDCy\uFEDC',
44a0: 20 74 32 3d 27 61 25 5c 75 46 45 44 43 27 22 20   t2='a%\uFEDC'" 
44b0: 7b 74 31 20 4c 49 4b 45 20 74 32 7d 20 31 0a 20  {t1 LIKE t2} 1. 
44c0: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
44d0: 35 2e 32 34 62 20 22 74 31 3d 27 61 78 5c 75 46  5.24b "t1='ax\uF
44e0: 45 44 43 79 5c 75 46 45 44 43 27 2c 20 74 32 3d  EDCy\uFEDC', t2=
44f0: 27 41 25 5c 75 46 45 44 43 27 22 20 7b 74 31 20  'A%\uFEDC'" {t1 
4500: 4c 49 4b 45 20 74 32 7d 20 24 4e 43 53 4c 0a 7d  LIKE t2} $NCSL.}
4510: 0a 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  ..test_expr expr
4520: 2d 35 2e 35 34 20 7b 74 31 3d 27 61 62 63 27 2c  -5.54 {t1='abc',
4530: 20 74 32 3d 4e 55 4c 4c 7d 20 7b 74 31 20 4c 49   t2=NULL} {t1 LI
4540: 4b 45 20 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74  KE t2} {{}}.test
4550: 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 35 35 20  _expr expr-5.55 
4560: 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55  {t1='abc', t2=NU
4570: 4c 4c 7d 20 7b 74 31 20 4e 4f 54 20 4c 49 4b 45  LL} {t1 NOT LIKE
4580: 20 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65   t2} {{}}.test_e
4590: 78 70 72 20 65 78 70 72 2d 35 2e 35 36 20 7b 74  xpr expr-5.56 {t
45a0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 4e 55 4c 4c  1='abc', t2=NULL
45b0: 7d 20 7b 74 32 20 4c 49 4b 45 20 74 31 7d 20 7b  } {t2 LIKE t1} {
45c0: 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78  {}}.test_expr ex
45d0: 70 72 2d 35 2e 35 37 20 7b 74 31 3d 27 61 62 63  pr-5.57 {t1='abc
45e0: 27 2c 20 74 32 3d 4e 55 4c 4c 7d 20 7b 74 32 20  ', t2=NULL} {t2 
45f0: 4e 4f 54 20 4c 49 4b 45 20 74 31 7d 20 7b 7b 7d  NOT LIKE t1} {{}
4600: 7d 0a 0a 23 20 4c 49 4b 45 20 65 78 70 72 65 73  }..# LIKE expres
4610: 73 69 6f 6e 73 20 74 68 61 74 20 75 73 65 20 45  sions that use E
4620: 53 43 41 50 45 20 63 68 61 72 61 63 74 65 72 73  SCAPE characters
4630: 2e 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  ..test_expr expr
4640: 2d 35 2e 35 38 61 20 7b 74 31 3d 27 61 62 63 27  -5.58a {t1='abc'
4650: 2c 20 74 32 3d 27 61 5f 63 27 7d 20 20 20 7b 74  , t2='a_c'}   {t
4660: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
4670: 20 27 37 27 7d 20 31 0a 74 65 73 74 5f 65 78 70   '7'} 1.test_exp
4680: 72 20 65 78 70 72 2d 35 2e 35 38 62 20 7b 74 31  r expr-5.58b {t1
4690: 3d 27 61 62 63 27 2c 20 74 32 3d 27 41 5f 43 27  ='abc', t2='A_C'
46a0: 7d 20 20 20 7b 74 31 20 4c 49 4b 45 20 74 32 20  }   {t1 LIKE t2 
46b0: 45 53 43 41 50 45 20 27 37 27 7d 20 24 4e 43 53  ESCAPE '7'} $NCS
46c0: 4c 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  L.test_expr expr
46d0: 2d 35 2e 35 39 61 20 7b 74 31 3d 27 61 5f 63 27  -5.59a {t1='a_c'
46e0: 2c 20 74 32 3d 27 61 37 5f 63 27 7d 20 20 7b 74  , t2='a7_c'}  {t
46f0: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
4700: 20 27 37 27 7d 20 31 0a 74 65 73 74 5f 65 78 70   '7'} 1.test_exp
4710: 72 20 65 78 70 72 2d 35 2e 35 39 62 20 7b 74 31  r expr-5.59b {t1
4720: 3d 27 61 5f 63 27 2c 20 74 32 3d 27 41 37 5f 43  ='a_c', t2='A7_C
4730: 27 7d 20 20 7b 74 31 20 4c 49 4b 45 20 74 32 20  '}  {t1 LIKE t2 
4740: 45 53 43 41 50 45 20 27 37 27 7d 20 24 4e 43 53  ESCAPE '7'} $NCS
4750: 4c 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  L.test_expr expr
4760: 2d 35 2e 36 30 61 20 7b 74 31 3d 27 61 62 63 27  -5.60a {t1='abc'
4770: 2c 20 74 32 3d 27 61 37 5f 63 27 7d 20 20 7b 74  , t2='a7_c'}  {t
4780: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
4790: 20 27 37 27 7d 20 30 0a 74 65 73 74 5f 65 78 70   '7'} 0.test_exp
47a0: 72 20 65 78 70 72 2d 35 2e 36 30 62 20 7b 74 31  r expr-5.60b {t1
47b0: 3d 27 61 62 63 27 2c 20 74 32 3d 27 41 37 5f 43  ='abc', t2='A7_C
47c0: 27 7d 20 20 7b 74 31 20 4c 49 4b 45 20 74 32 20  '}  {t1 LIKE t2 
47d0: 45 53 43 41 50 45 20 27 37 27 7d 20 30 0a 74 65  ESCAPE '7'} 0.te
47e0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 36  st_expr expr-5.6
47f0: 31 61 20 7b 74 31 3d 27 61 37 58 63 27 2c 20 74  1a {t1='a7Xc', t
4800: 32 3d 27 61 37 5f 63 27 7d 20 7b 74 31 20 4c 49  2='a7_c'} {t1 LI
4810: 4b 45 20 74 32 20 45 53 43 41 50 45 20 27 37 27  KE t2 ESCAPE '7'
4820: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
4830: 70 72 2d 35 2e 36 31 62 20 7b 74 31 3d 27 61 37  pr-5.61b {t1='a7
4840: 58 63 27 2c 20 74 32 3d 27 41 37 5f 43 27 7d 20  Xc', t2='A7_C'} 
4850: 7b 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41  {t1 LIKE t2 ESCA
4860: 50 45 20 27 37 27 7d 20 30 0a 74 65 73 74 5f 65  PE '7'} 0.test_e
4870: 78 70 72 20 65 78 70 72 2d 35 2e 36 32 61 20 7b  xpr expr-5.62a {
4880: 74 31 3d 27 61 62 63 64 65 27 2c 20 74 32 3d 27  t1='abcde', t2='
4890: 61 25 65 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  a%e'} {t1 LIKE t
48a0: 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 31 0a  2 ESCAPE '7'} 1.
48b0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
48c0: 2e 36 32 62 20 7b 74 31 3d 27 61 62 63 64 65 27  .62b {t1='abcde'
48d0: 2c 20 74 32 3d 27 41 25 45 27 7d 20 7b 74 31 20  , t2='A%E'} {t1 
48e0: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
48f0: 37 27 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65  7'} $NCSL.test_e
4900: 78 70 72 20 65 78 70 72 2d 35 2e 36 33 61 20 7b  xpr expr-5.63a {
4910: 74 31 3d 27 61 62 63 64 65 27 2c 20 74 32 3d 27  t1='abcde', t2='
4920: 61 37 25 65 27 7d 20 7b 74 31 20 4c 49 4b 45 20  a7%e'} {t1 LIKE 
4930: 74 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 30  t2 ESCAPE '7'} 0
4940: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
4950: 35 2e 36 33 62 20 7b 74 31 3d 27 61 62 63 64 65  5.63b {t1='abcde
4960: 27 2c 20 74 32 3d 27 41 37 25 45 27 7d 20 7b 74  ', t2='A7%E'} {t
4970: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
4980: 20 27 37 27 7d 20 30 0a 74 65 73 74 5f 65 78 70   '7'} 0.test_exp
4990: 72 20 65 78 70 72 2d 35 2e 36 34 61 20 7b 74 31  r expr-5.64a {t1
49a0: 3d 27 61 37 63 64 65 27 2c 20 74 32 3d 27 61 37  ='a7cde', t2='a7
49b0: 25 65 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32  %e'} {t1 LIKE t2
49c0: 20 45 53 43 41 50 45 20 27 37 27 7d 20 30 0a 74   ESCAPE '7'} 0.t
49d0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
49e0: 36 34 62 20 7b 74 31 3d 27 61 37 63 64 65 27 2c  64b {t1='a7cde',
49f0: 20 74 32 3d 27 41 37 25 45 27 7d 20 7b 74 31 20   t2='A7%E'} {t1 
4a00: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4a10: 37 27 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  7'} 0.test_expr 
4a20: 65 78 70 72 2d 35 2e 36 35 61 20 7b 74 31 3d 27  expr-5.65a {t1='
4a30: 61 37 63 64 65 27 2c 20 74 32 3d 27 61 37 37 25  a7cde', t2='a77%
4a40: 65 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74 32 20  e'} {t1 LIKE t2 
4a50: 45 53 43 41 50 45 20 27 37 27 7d 20 31 0a 74 65  ESCAPE '7'} 1.te
4a60: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 36  st_expr expr-5.6
4a70: 35 62 20 7b 74 31 3d 27 61 37 63 64 65 27 2c 20  5b {t1='a7cde', 
4a80: 74 32 3d 27 41 37 37 25 45 27 7d 20 7b 74 31 20  t2='A77%E'} {t1 
4a90: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4aa0: 37 27 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65  7'} $NCSL.test_e
4ab0: 78 70 72 20 65 78 70 72 2d 35 2e 36 36 61 20 7b  xpr expr-5.66a {
4ac0: 74 31 3d 27 61 62 63 37 27 2c 20 74 32 3d 27 61  t1='abc7', t2='a
4ad0: 25 37 37 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  %77'} {t1 LIKE t
4ae0: 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 31 0a  2 ESCAPE '7'} 1.
4af0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4b00: 2e 36 36 62 20 7b 74 31 3d 27 61 62 63 37 27 2c  .66b {t1='abc7',
4b10: 20 74 32 3d 27 41 25 37 37 27 7d 20 7b 74 31 20   t2='A%77'} {t1 
4b20: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4b30: 37 27 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65  7'} $NCSL.test_e
4b40: 78 70 72 20 65 78 70 72 2d 35 2e 36 37 61 20 7b  xpr expr-5.67a {
4b50: 74 31 3d 27 61 62 63 5f 27 2c 20 74 32 3d 27 61  t1='abc_', t2='a
4b60: 25 37 5f 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  %7_'} {t1 LIKE t
4b70: 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 31 0a  2 ESCAPE '7'} 1.
4b80: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4b90: 2e 36 37 62 20 7b 74 31 3d 27 61 62 63 5f 27 2c  .67b {t1='abc_',
4ba0: 20 74 32 3d 27 41 25 37 5f 27 7d 20 7b 74 31 20   t2='A%7_'} {t1 
4bb0: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4bc0: 37 27 7d 20 24 4e 43 53 4c 0a 74 65 73 74 5f 65  7'} $NCSL.test_e
4bd0: 78 70 72 20 65 78 70 72 2d 35 2e 36 38 61 20 7b  xpr expr-5.68a {
4be0: 74 31 3d 27 61 62 63 37 27 2c 20 74 32 3d 27 61  t1='abc7', t2='a
4bf0: 25 37 5f 27 7d 20 7b 74 31 20 4c 49 4b 45 20 74  %7_'} {t1 LIKE t
4c00: 32 20 45 53 43 41 50 45 20 27 37 27 7d 20 30 0a  2 ESCAPE '7'} 0.
4c10: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4c20: 2e 36 38 62 20 7b 74 31 3d 27 61 62 63 37 27 2c  .68b {t1='abc7',
4c30: 20 74 32 3d 27 41 25 37 5f 27 7d 20 7b 74 31 20   t2='A%7_'} {t1 
4c40: 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45 20 27  LIKE t2 ESCAPE '
4c50: 37 27 7d 20 30 0a 0a 23 20 54 68 65 73 65 20 61  7'} 0..# These a
4c60: 72 65 20 74 68 65 20 73 61 6d 65 20 74 65 73 74  re the same test
4c70: 20 61 73 20 74 68 65 20 62 6c 6f 63 6b 20 61 62   as the block ab
4c80: 6f 76 65 2c 20 62 75 74 20 75 73 69 6e 67 20 61  ove, but using a
4c90: 20 6d 75 6c 74 69 2d 62 79 74 65 20 0a 23 20 63   multi-byte .# c
4ca0: 68 61 72 61 63 74 65 72 20 61 73 20 74 68 65 20  haracter as the 
4cb0: 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65 72  escape character
4cc0: 2e 0a 69 66 20 7b 22 5c 75 31 32 33 34 22 21 3d  ..if {"\u1234"!=
4cd0: 22 75 31 32 33 34 22 7d 20 7b 0a 20 20 74 65 73  "u1234"} {.  tes
4ce0: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 36 39  t_expr expr-5.69
4cf0: 61 20 22 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  a "t1='abc', t2=
4d00: 27 61 5f 63 27 22 20 5c 0a 20 20 20 20 20 20 22  'a_c'" \.      "
4d10: 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50  t1 LIKE t2 ESCAP
4d20: 45 20 27 5c 75 31 32 33 34 27 22 20 31 0a 20 20  E '\u1234'" 1.  
4d30: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4d40: 2e 36 39 62 20 22 74 31 3d 27 61 62 63 27 2c 20  .69b "t1='abc', 
4d50: 74 32 3d 27 41 5f 43 27 22 20 5c 0a 20 20 20 20  t2='A_C'" \.    
4d60: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
4d70: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 24  CAPE '\u1234'" $
4d80: 4e 43 53 4c 0a 20 20 74 65 73 74 5f 65 78 70 72  NCSL.  test_expr
4d90: 20 65 78 70 72 2d 35 2e 37 30 61 20 22 74 31 3d   expr-5.70a "t1=
4da0: 27 61 5f 63 27 2c 20 74 32 3d 27 61 5c 75 31 32  'a_c', t2='a\u12
4db0: 33 34 5f 63 27 22 20 5c 0a 20 20 20 20 20 20 22  34_c'" \.      "
4dc0: 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50  t1 LIKE t2 ESCAP
4dd0: 45 20 27 5c 75 31 32 33 34 27 22 20 31 0a 20 20  E '\u1234'" 1.  
4de0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4df0: 2e 37 30 62 20 22 74 31 3d 27 61 5f 63 27 2c 20  .70b "t1='a_c', 
4e00: 74 32 3d 27 41 5c 75 31 32 33 34 5f 43 27 22 20  t2='A\u1234_C'" 
4e10: 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45  \.      "t1 LIKE
4e20: 20 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32   t2 ESCAPE '\u12
4e30: 33 34 27 22 20 24 4e 43 53 4c 0a 20 20 74 65 73  34'" $NCSL.  tes
4e40: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 37 31  t_expr expr-5.71
4e50: 61 20 22 74 31 3d 27 61 62 63 27 2c 20 74 32 3d  a "t1='abc', t2=
4e60: 27 61 5c 75 31 32 33 34 5f 63 27 22 20 5c 0a 20  'a\u1234_c'" \. 
4e70: 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45 20 74        "t1 LIKE t
4e80: 32 20 45 53 43 41 50 45 20 27 5c 75 31 32 33 34  2 ESCAPE '\u1234
4e90: 27 22 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72  '" 0.  test_expr
4ea0: 20 65 78 70 72 2d 35 2e 37 31 62 20 22 74 31 3d   expr-5.71b "t1=
4eb0: 27 61 62 63 27 2c 20 74 32 3d 27 41 5c 75 31 32  'abc', t2='A\u12
4ec0: 33 34 5f 43 27 22 20 5c 0a 20 20 20 20 20 20 20  34_C'" \.       
4ed0: 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41  "t1 LIKE t2 ESCA
4ee0: 50 45 20 27 5c 75 31 32 33 34 27 22 20 30 0a 20  PE '\u1234'" 0. 
4ef0: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
4f00: 35 2e 37 32 61 20 22 74 31 3d 27 61 5c 75 31 32  5.72a "t1='a\u12
4f10: 33 34 58 63 27 2c 20 74 32 3d 27 61 5c 75 31 32  34Xc', t2='a\u12
4f20: 33 34 5f 63 27 22 20 5c 0a 20 20 20 20 20 20 22  34_c'" \.      "
4f30: 74 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50  t1 LIKE t2 ESCAP
4f40: 45 20 27 5c 75 31 32 33 34 27 22 20 30 0a 20 20  E '\u1234'" 0.  
4f50: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35  test_expr expr-5
4f60: 2e 37 32 62 20 22 74 31 3d 27 61 5c 75 31 32 33  .72b "t1='a\u123
4f70: 34 58 63 27 2c 20 74 32 3d 27 41 5c 75 31 32 33  4Xc', t2='A\u123
4f80: 34 5f 43 27 22 20 5c 0a 20 20 20 20 20 20 22 74  4_C'" \.      "t
4f90: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
4fa0: 20 27 5c 75 31 32 33 34 27 22 20 30 0a 20 20 74   '\u1234'" 0.  t
4fb0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
4fc0: 37 33 61 20 22 74 31 3d 27 61 62 63 64 65 27 2c  73a "t1='abcde',
4fd0: 20 74 32 3d 27 61 25 65 27 22 20 5c 0a 20 20 20   t2='a%e'" \.   
4fe0: 20 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45     "t1 LIKE t2 E
4ff0: 53 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20  SCAPE '\u1234'" 
5000: 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78  1.  test_expr ex
5010: 70 72 2d 35 2e 37 33 62 20 22 74 31 3d 27 61 62  pr-5.73b "t1='ab
5020: 63 64 65 27 2c 20 74 32 3d 27 41 25 45 27 22 20  cde', t2='A%E'" 
5030: 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45  \.      "t1 LIKE
5040: 20 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32   t2 ESCAPE '\u12
5050: 33 34 27 22 20 24 4e 43 53 4c 0a 20 20 74 65 73  34'" $NCSL.  tes
5060: 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e 37 34  t_expr expr-5.74
5070: 61 20 22 74 31 3d 27 61 62 63 64 65 27 2c 20 74  a "t1='abcde', t
5080: 32 3d 27 61 5c 75 31 32 33 34 25 65 27 22 20 5c  2='a\u1234%e'" \
5090: 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45 20  .      "t1 LIKE 
50a0: 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32 33  t2 ESCAPE '\u123
50b0: 34 27 22 20 30 0a 20 20 74 65 73 74 5f 65 78 70  4'" 0.  test_exp
50c0: 72 20 65 78 70 72 2d 35 2e 37 34 62 20 22 74 31  r expr-5.74b "t1
50d0: 3d 27 61 62 63 64 65 27 2c 20 74 32 3d 27 41 5c  ='abcde', t2='A\
50e0: 75 31 32 33 34 25 45 27 22 20 5c 0a 20 20 20 20  u1234%E'" \.    
50f0: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
5100: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 30  CAPE '\u1234'" 0
5110: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
5120: 72 2d 35 2e 37 35 61 20 22 74 31 3d 27 61 5c 75  r-5.75a "t1='a\u
5130: 31 32 33 34 63 64 65 27 2c 20 74 32 3d 27 61 5c  1234cde', t2='a\
5140: 75 31 32 33 34 25 65 27 22 20 5c 0a 20 20 20 20  u1234%e'" \.    
5150: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
5160: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 30  CAPE '\u1234'" 0
5170: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
5180: 72 2d 35 2e 37 35 62 20 22 74 31 3d 27 61 5c 75  r-5.75b "t1='a\u
5190: 31 32 33 34 63 64 65 27 2c 20 74 32 3d 27 41 5c  1234cde', t2='A\
51a0: 75 31 32 33 34 25 45 27 22 20 5c 0a 20 20 20 20  u1234%E'" \.    
51b0: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
51c0: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 30  CAPE '\u1234'" 0
51d0: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
51e0: 72 2d 35 2e 37 36 61 20 22 74 31 3d 27 61 5c 75  r-5.76a "t1='a\u
51f0: 31 32 33 34 63 64 65 27 2c 20 74 32 3d 27 61 5c  1234cde', t2='a\
5200: 75 31 32 33 34 5c 75 31 32 33 34 25 65 27 22 20  u1234\u1234%e'" 
5210: 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45  \.      "t1 LIKE
5220: 20 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32   t2 ESCAPE '\u12
5230: 33 34 27 22 20 31 0a 20 20 74 65 73 74 5f 65 78  34'" 1.  test_ex
5240: 70 72 20 65 78 70 72 2d 35 2e 37 36 62 20 22 74  pr expr-5.76b "t
5250: 31 3d 27 61 5c 75 31 32 33 34 63 64 65 27 2c 20  1='a\u1234cde', 
5260: 74 32 3d 27 41 5c 75 31 32 33 34 5c 75 31 32 33  t2='A\u1234\u123
5270: 34 25 45 27 22 20 5c 0a 20 20 20 20 20 20 22 74  4%E'" \.      "t
5280: 31 20 4c 49 4b 45 20 74 32 20 45 53 43 41 50 45  1 LIKE t2 ESCAPE
5290: 20 27 5c 75 31 32 33 34 27 22 20 24 4e 43 53 4c   '\u1234'" $NCSL
52a0: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
52b0: 72 2d 35 2e 37 37 61 20 22 74 31 3d 27 61 62 63  r-5.77a "t1='abc
52c0: 5c 75 31 32 33 34 27 2c 20 74 32 3d 27 61 25 5c  \u1234', t2='a%\
52d0: 75 31 32 33 34 5c 75 31 32 33 34 27 22 20 5c 0a  u1234\u1234'" \.
52e0: 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45 20 74        "t1 LIKE t
52f0: 32 20 45 53 43 41 50 45 20 27 5c 75 31 32 33 34  2 ESCAPE '\u1234
5300: 27 22 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72  '" 1.  test_expr
5310: 20 65 78 70 72 2d 35 2e 37 37 62 20 22 74 31 3d   expr-5.77b "t1=
5320: 27 61 62 63 5c 75 31 32 33 34 27 2c 20 74 32 3d  'abc\u1234', t2=
5330: 27 41 25 5c 75 31 32 33 34 5c 75 31 32 33 34 27  'A%\u1234\u1234'
5340: 22 20 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49  " \.      "t1 LI
5350: 4b 45 20 74 32 20 45 53 43 41 50 45 20 27 5c 75  KE t2 ESCAPE '\u
5360: 31 32 33 34 27 22 20 24 4e 43 53 4c 0a 20 20 74  1234'" $NCSL.  t
5370: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 35 2e  est_expr expr-5.
5380: 37 38 61 20 22 74 31 3d 27 61 62 63 5f 27 2c 20  78a "t1='abc_', 
5390: 74 32 3d 27 61 25 5c 75 31 32 33 34 5f 27 22 20  t2='a%\u1234_'" 
53a0: 5c 0a 20 20 20 20 20 20 22 74 31 20 4c 49 4b 45  \.      "t1 LIKE
53b0: 20 74 32 20 45 53 43 41 50 45 20 27 5c 75 31 32   t2 ESCAPE '\u12
53c0: 33 34 27 22 20 31 0a 20 20 74 65 73 74 5f 65 78  34'" 1.  test_ex
53d0: 70 72 20 65 78 70 72 2d 35 2e 37 38 62 20 22 74  pr expr-5.78b "t
53e0: 31 3d 27 61 62 63 5f 27 2c 20 74 32 3d 27 41 25  1='abc_', t2='A%
53f0: 5c 75 31 32 33 34 5f 27 22 20 5c 0a 20 20 20 20  \u1234_'" \.    
5400: 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20 45 53    "t1 LIKE t2 ES
5410: 43 41 50 45 20 27 5c 75 31 32 33 34 27 22 20 24  CAPE '\u1234'" $
5420: 4e 43 53 4c 0a 20 20 74 65 73 74 5f 65 78 70 72  NCSL.  test_expr
5430: 20 65 78 70 72 2d 35 2e 37 39 61 20 22 74 31 3d   expr-5.79a "t1=
5440: 27 61 62 63 5c 75 31 32 33 34 27 2c 20 74 32 3d  'abc\u1234', t2=
5450: 27 61 25 5c 75 31 32 33 34 5f 27 22 20 5c 0a 20  'a%\u1234_'" \. 
5460: 20 20 20 20 20 22 74 31 20 4c 49 4b 45 20 74 32       "t1 LIKE t2
5470: 20 45 53 43 41 50 45 20 27 5c 75 31 32 33 34 27   ESCAPE '\u1234'
5480: 22 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72 20  " 0.  test_expr 
5490: 65 78 70 72 2d 35 2e 37 39 62 20 22 74 31 3d 27  expr-5.79b "t1='
54a0: 61 62 63 5c 75 31 32 33 34 27 2c 20 74 32 3d 27  abc\u1234', t2='
54b0: 41 25 5c 75 31 32 33 34 5f 27 22 20 5c 0a 20 20  A%\u1234_'" \.  
54c0: 20 20 20 20 22 74 31 20 4c 49 4b 45 20 74 32 20      "t1 LIKE t2 
54d0: 45 53 43 41 50 45 20 27 5c 75 31 32 33 34 27 22  ESCAPE '\u1234'"
54e0: 20 30 0a 7d 0a 0a 74 65 73 74 5f 65 78 70 72 20   0.}..test_expr 
54f0: 65 78 70 72 2d 36 2e 31 20 7b 74 31 3d 27 61 62  expr-6.1 {t1='ab
5500: 63 27 2c 20 74 32 3d 27 78 79 7a 27 7d 20 7b 74  c', t2='xyz'} {t
5510: 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73  1 GLOB t2} 0.tes
5520: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32 20  t_expr expr-6.2 
5530: 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 41  {t1='abc', t2='A
5540: 42 43 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  BC'} {t1 GLOB t2
5550: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
5560: 70 72 2d 36 2e 33 20 7b 74 31 3d 27 61 62 63 27  pr-6.3 {t1='abc'
5570: 2c 20 74 32 3d 27 41 3f 43 27 7d 20 7b 74 31 20  , t2='A?C'} {t1 
5580: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
5590: 65 78 70 72 20 65 78 70 72 2d 36 2e 34 20 7b 74  expr expr-6.4 {t
55a0: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 3f 63  1='abc', t2='a?c
55b0: 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20  '} {t1 GLOB t2} 
55c0: 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  1.test_expr expr
55d0: 2d 36 2e 35 20 7b 74 31 3d 27 61 62 63 27 2c 20  -6.5 {t1='abc', 
55e0: 74 32 3d 27 61 62 63 3f 27 7d 20 7b 74 31 20 47  t2='abc?'} {t1 G
55f0: 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  LOB t2} 0.test_e
5600: 78 70 72 20 65 78 70 72 2d 36 2e 36 20 7b 74 31  xpr expr-6.6 {t1
5610: 3d 27 61 62 63 27 2c 20 74 32 3d 27 41 2a 43 27  ='abc', t2='A*C'
5620: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
5630: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
5640: 36 2e 37 20 7b 74 31 3d 27 61 62 63 27 2c 20 74  6.7 {t1='abc', t
5650: 32 3d 27 61 2a 63 27 7d 20 7b 74 31 20 47 4c 4f  2='a*c'} {t1 GLO
5660: 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  B t2} 1.test_exp
5670: 72 20 65 78 70 72 2d 36 2e 38 20 7b 74 31 3d 27  r expr-6.8 {t1='
5680: 61 62 78 79 7a 7a 79 63 27 2c 20 74 32 3d 27 61  abxyzzyc', t2='a
5690: 2a 63 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  *c'} {t1 GLOB t2
56a0: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
56b0: 70 72 2d 36 2e 39 20 7b 74 31 3d 27 61 62 78 79  pr-6.9 {t1='abxy
56c0: 7a 7a 79 27 2c 20 74 32 3d 27 61 2a 63 27 7d 20  zzy', t2='a*c'} 
56d0: 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74  {t1 GLOB t2} 0.t
56e0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e  est_expr expr-6.
56f0: 31 30 20 7b 74 31 3d 27 61 62 78 79 7a 7a 79 63  10 {t1='abxyzzyc
5700: 78 27 2c 20 74 32 3d 27 61 2a 63 27 7d 20 7b 74  x', t2='a*c'} {t
5710: 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73  1 GLOB t2} 0.tes
5720: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 31 31  t_expr expr-6.11
5730: 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27   {t1='abc', t2='
5740: 78 79 7a 27 7d 20 7b 74 31 20 4e 4f 54 20 47 4c  xyz'} {t1 NOT GL
5750: 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78  OB t2} 1.test_ex
5760: 70 72 20 65 78 70 72 2d 36 2e 31 32 20 7b 74 31  pr expr-6.12 {t1
5770: 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 62 63 27  ='abc', t2='abc'
5780: 7d 20 7b 74 31 20 4e 4f 54 20 47 4c 4f 42 20 74  } {t1 NOT GLOB t
5790: 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65  2} 0.test_expr e
57a0: 78 70 72 2d 36 2e 31 33 20 7b 74 31 3d 27 61 62  xpr-6.13 {t1='ab
57b0: 63 27 2c 20 74 32 3d 27 61 5b 62 78 5d 63 27 7d  c', t2='a[bx]c'}
57c0: 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a   {t1 GLOB t2} 1.
57d0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36  test_expr expr-6
57e0: 2e 31 34 20 7b 74 31 3d 27 61 62 63 27 2c 20 74  .14 {t1='abc', t
57f0: 32 3d 27 61 5b 63 78 5d 63 27 7d 20 7b 74 31 20  2='a[cx]c'} {t1 
5800: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
5810: 65 78 70 72 20 65 78 70 72 2d 36 2e 31 35 20 7b  expr expr-6.15 {
5820: 74 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 5b  t1='abc', t2='a[
5830: 61 2d 64 5d 63 27 7d 20 7b 74 31 20 47 4c 4f 42  a-d]c'} {t1 GLOB
5840: 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72   t2} 1.test_expr
5850: 20 65 78 70 72 2d 36 2e 31 36 20 7b 74 31 3d 27   expr-6.16 {t1='
5860: 61 62 63 27 2c 20 74 32 3d 27 61 5b 5e 61 2d 64  abc', t2='a[^a-d
5870: 5d 63 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  ]c'} {t1 GLOB t2
5880: 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 0.test_expr ex
5890: 70 72 2d 36 2e 31 37 20 7b 74 31 3d 27 61 62 63  pr-6.17 {t1='abc
58a0: 27 2c 20 74 32 3d 27 61 5b 41 2d 44 63 5d 63 27  ', t2='a[A-Dc]c'
58b0: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
58c0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
58d0: 36 2e 31 38 20 7b 74 31 3d 27 61 62 63 27 2c 20  6.18 {t1='abc', 
58e0: 74 32 3d 27 61 5b 5e 41 2d 44 63 5d 63 27 7d 20  t2='a[^A-Dc]c'} 
58f0: 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74  {t1 GLOB t2} 1.t
5900: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e  est_expr expr-6.
5910: 31 39 20 7b 74 31 3d 27 61 62 63 27 2c 20 74 32  19 {t1='abc', t2
5920: 3d 27 61 5b 5d 62 5d 63 27 7d 20 7b 74 31 20 47  ='a[]b]c'} {t1 G
5930: 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65  LOB t2} 1.test_e
5940: 78 70 72 20 65 78 70 72 2d 36 2e 32 30 20 7b 74  xpr expr-6.20 {t
5950: 31 3d 27 61 62 63 27 2c 20 74 32 3d 27 61 5b 5e  1='abc', t2='a[^
5960: 5d 62 5d 63 27 7d 20 7b 74 31 20 47 4c 4f 42 20  ]b]c'} {t1 GLOB 
5970: 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72 20  t2} 0.test_expr 
5980: 65 78 70 72 2d 36 2e 32 31 61 20 7b 74 31 3d 27  expr-6.21a {t1='
5990: 61 62 63 64 65 66 67 27 2c 20 74 32 3d 27 61 2a  abcdefg', t2='a*
59a0: 5b 64 65 5d 67 27 7d 20 7b 74 31 20 47 4c 4f 42  [de]g'} {t1 GLOB
59b0: 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70 72   t2} 0.test_expr
59c0: 20 65 78 70 72 2d 36 2e 32 31 62 20 7b 74 31 3d   expr-6.21b {t1=
59d0: 27 61 62 63 64 65 66 67 27 2c 20 74 32 3d 27 61  'abcdefg', t2='a
59e0: 2a 5b 64 66 5d 67 27 7d 20 7b 74 31 20 47 4c 4f  *[df]g'} {t1 GLO
59f0: 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  B t2} 1.test_exp
5a00: 72 20 65 78 70 72 2d 36 2e 32 31 63 20 7b 74 31  r expr-6.21c {t1
5a10: 3d 27 61 62 63 64 65 66 67 27 2c 20 74 32 3d 27  ='abcdefg', t2='
5a20: 61 2a 5b 64 2d 68 5d 67 27 7d 20 7b 74 31 20 47  a*[d-h]g'} {t1 G
5a30: 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65  LOB t2} 1.test_e
5a40: 78 70 72 20 65 78 70 72 2d 36 2e 32 31 64 20 7b  xpr expr-6.21d {
5a50: 74 31 3d 27 61 62 63 64 65 66 67 27 2c 20 74 32  t1='abcdefg', t2
5a60: 3d 27 61 2a 5b 62 2d 65 5d 67 27 7d 20 7b 74 31  ='a*[b-e]g'} {t1
5a70: 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74   GLOB t2} 0.test
5a80: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32 32 61  _expr expr-6.22a
5a90: 20 7b 74 31 3d 27 61 62 63 64 65 66 67 27 2c 20   {t1='abcdefg', 
5aa0: 74 32 3d 27 61 2a 5b 5e 64 65 5d 67 27 7d 20 7b  t2='a*[^de]g'} {
5ab0: 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65  t1 GLOB t2} 1.te
5ac0: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32  st_expr expr-6.2
5ad0: 32 62 20 7b 74 31 3d 27 61 62 63 64 65 66 67 27  2b {t1='abcdefg'
5ae0: 2c 20 74 32 3d 27 61 2a 5b 5e 64 65 66 5d 67 27  , t2='a*[^def]g'
5af0: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
5b00: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
5b10: 36 2e 32 33 20 7b 74 31 3d 27 61 62 63 64 65 66  6.23 {t1='abcdef
5b20: 67 27 2c 20 74 32 3d 27 61 2a 3f 67 27 7d 20 7b  g', t2='a*?g'} {
5b30: 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65  t1 GLOB t2} 1.te
5b40: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32  st_expr expr-6.2
5b50: 34 20 7b 74 31 3d 27 61 63 27 2c 20 74 32 3d 27  4 {t1='ac', t2='
5b60: 61 2a 63 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74  a*c'} {t1 GLOB t
5b70: 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65  2} 1.test_expr e
5b80: 78 70 72 2d 36 2e 32 35 20 7b 74 31 3d 27 61 63  xpr-6.25 {t1='ac
5b90: 27 2c 20 74 32 3d 27 61 2a 3f 63 27 7d 20 7b 74  ', t2='a*?c'} {t
5ba0: 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73  1 GLOB t2} 0.tes
5bb0: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 32 36  t_expr expr-6.26
5bc0: 20 7b 74 31 3d 27 61 2a 63 27 2c 20 74 32 3d 27   {t1='a*c', t2='
5bd0: 61 5b 2a 5d 63 27 7d 20 7b 74 31 20 47 4c 4f 42  a[*]c'} {t1 GLOB
5be0: 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72   t2} 1.test_expr
5bf0: 20 65 78 70 72 2d 36 2e 32 37 20 7b 74 31 3d 27   expr-6.27 {t1='
5c00: 61 3f 63 27 2c 20 74 32 3d 27 61 5b 3f 5d 63 27  a?c', t2='a[?]c'
5c10: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31  } {t1 GLOB t2} 1
5c20: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
5c30: 36 2e 32 38 20 7b 74 31 3d 27 61 5b 63 27 2c 20  6.28 {t1='a[c', 
5c40: 74 32 3d 27 61 5b 5b 5d 63 27 7d 20 7b 74 31 20  t2='a[[]c'} {t1 
5c50: 47 4c 4f 42 20 74 32 7d 20 31 0a 0a 0a 23 20 54  GLOB t2} 1...# T
5c60: 68 65 73 65 20 74 65 73 74 73 20 6f 6e 6c 79 20  hese tests only 
5c70: 77 6f 72 6b 20 6f 6e 20 76 65 72 73 69 6f 6e 73  work on versions
5c80: 20 6f 66 20 54 43 4c 20 74 68 61 74 20 73 75 70   of TCL that sup
5c90: 70 6f 72 74 20 55 6e 69 63 6f 64 65 0a 23 0a 69  port Unicode.#.i
5ca0: 66 20 7b 22 5c 75 31 32 33 34 22 21 3d 22 75 31  f {"\u1234"!="u1
5cb0: 32 33 34 22 7d 20 7b 0a 20 20 74 65 73 74 5f 65  234"} {.  test_e
5cc0: 78 70 72 20 65 78 70 72 2d 36 2e 32 36 20 22 74  xpr expr-6.26 "t
5cd0: 31 3d 27 61 5c 75 30 30 38 30 63 27 2c 20 74 32  1='a\u0080c', t2
5ce0: 3d 27 61 3f 63 27 22 20 7b 74 31 20 47 4c 4f 42  ='a?c'" {t1 GLOB
5cf0: 20 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78   t2} 1.  test_ex
5d00: 70 72 20 65 78 70 72 2d 36 2e 32 37 20 22 74 31  pr expr-6.27 "t1
5d10: 3d 27 61 5c 75 30 37 66 66 63 27 2c 20 74 32 3d  ='a\u07ffc', t2=
5d20: 27 61 3f 63 27 22 20 7b 74 31 20 47 4c 4f 42 20  'a?c'" {t1 GLOB 
5d30: 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70  t2} 1.  test_exp
5d40: 72 20 65 78 70 72 2d 36 2e 32 38 20 22 74 31 3d  r expr-6.28 "t1=
5d50: 27 61 5c 75 30 38 30 30 63 27 2c 20 74 32 3d 27  'a\u0800c', t2='
5d60: 61 3f 63 27 22 20 7b 74 31 20 47 4c 4f 42 20 74  a?c'" {t1 GLOB t
5d70: 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72  2} 1.  test_expr
5d80: 20 65 78 70 72 2d 36 2e 32 39 20 22 74 31 3d 27   expr-6.29 "t1='
5d90: 61 5c 75 66 66 66 66 63 27 2c 20 74 32 3d 27 61  a\uffffc', t2='a
5da0: 3f 63 27 22 20 7b 74 31 20 47 4c 4f 42 20 74 32  ?c'" {t1 GLOB t2
5db0: 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20  } 1.  test_expr 
5dc0: 65 78 70 72 2d 36 2e 33 30 20 22 74 31 3d 27 61  expr-6.30 "t1='a
5dd0: 5c 75 31 32 33 34 27 2c 20 74 32 3d 27 61 3f 27  \u1234', t2='a?'
5de0: 22 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31  " {t1 GLOB t2} 1
5df0: 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78 70  .  test_expr exp
5e00: 72 2d 36 2e 33 31 20 22 74 31 3d 27 61 5c 75 31  r-6.31 "t1='a\u1
5e10: 32 33 34 27 2c 20 74 32 3d 27 61 3f 3f 27 22 20  234', t2='a??'" 
5e20: 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 20  {t1 GLOB t2} 0. 
5e30: 20 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d   test_expr expr-
5e40: 36 2e 33 32 20 22 74 31 3d 27 61 78 5c 75 31 32  6.32 "t1='ax\u12
5e50: 33 34 27 2c 20 74 32 3d 27 61 3f 5c 75 31 32 33  34', t2='a?\u123
5e60: 34 27 22 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d  4'" {t1 GLOB t2}
5e70: 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   1.  test_expr e
5e80: 78 70 72 2d 36 2e 33 33 20 22 74 31 3d 27 61 78  xpr-6.33 "t1='ax
5e90: 5c 75 31 32 33 34 27 2c 20 74 32 3d 27 61 2a 5c  \u1234', t2='a*\
5ea0: 75 31 32 33 34 27 22 20 7b 74 31 20 47 4c 4f 42  u1234'" {t1 GLOB
5eb0: 20 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78   t2} 1.  test_ex
5ec0: 70 72 20 65 78 70 72 2d 36 2e 33 34 20 22 74 31  pr expr-6.34 "t1
5ed0: 3d 27 61 78 5c 75 31 32 33 34 79 5c 75 31 32 33  ='ax\u1234y\u123
5ee0: 34 27 2c 20 74 32 3d 27 61 2a 5c 75 31 32 33 34  4', t2='a*\u1234
5ef0: 27 22 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20  '" {t1 GLOB t2} 
5f00: 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65 78  1.  test_expr ex
5f10: 70 72 2d 36 2e 33 35 20 22 74 31 3d 27 61 5c 75  pr-6.35 "t1='a\u
5f20: 31 32 33 34 62 27 2c 20 74 32 3d 27 61 5c 5b 78  1234b', t2='a\[x
5f30: 5c 75 31 32 33 34 79 5c 5d 62 27 22 20 7b 74 31  \u1234y\]b'" {t1
5f40: 20 47 4c 4f 42 20 74 32 7d 20 31 0a 20 20 74 65   GLOB t2} 1.  te
5f50: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 33  st_expr expr-6.3
5f60: 36 20 22 74 31 3d 27 61 5c 75 31 32 33 34 62 27  6 "t1='a\u1234b'
5f70: 2c 20 74 32 3d 27 61 5c 5b 5c 75 31 32 33 33 2d  , t2='a\[\u1233-
5f80: 5c 75 31 32 33 35 5c 5d 62 27 22 20 7b 74 31 20  \u1235\]b'" {t1 
5f90: 47 4c 4f 42 20 74 32 7d 20 31 0a 20 20 74 65 73  GLOB t2} 1.  tes
5fa0: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 33 37  t_expr expr-6.37
5fb0: 20 22 74 31 3d 27 61 5c 75 31 32 33 34 62 27 2c   "t1='a\u1234b',
5fc0: 20 74 32 3d 27 61 5c 5b 5c 75 31 32 33 34 2d 5c   t2='a\[\u1234-\
5fd0: 75 31 32 34 66 5c 5d 62 27 22 20 7b 74 31 20 47  u124f\]b'" {t1 G
5fe0: 4c 4f 42 20 74 32 7d 20 31 0a 20 20 74 65 73 74  LOB t2} 1.  test
5ff0: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 33 38 20  _expr expr-6.38 
6000: 22 74 31 3d 27 61 5c 75 31 32 33 34 62 27 2c 20  "t1='a\u1234b', 
6010: 74 32 3d 27 61 5c 5b 5c 75 31 32 33 35 2d 5c 75  t2='a\[\u1235-\u
6020: 31 32 34 66 5c 5d 62 27 22 20 7b 74 31 20 47 4c  124f\]b'" {t1 GL
6030: 4f 42 20 74 32 7d 20 30 0a 20 20 74 65 73 74 5f  OB t2} 0.  test_
6040: 65 78 70 72 20 65 78 70 72 2d 36 2e 33 39 20 22  expr expr-6.39 "
6050: 74 31 3d 27 61 5c 75 31 32 33 34 62 27 2c 20 74  t1='a\u1234b', t
6060: 32 3d 27 61 5c 5b 61 2d 5c 75 31 32 33 35 5c 5d  2='a\[a-\u1235\]
6070: 62 27 22 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d  b'" {t1 GLOB t2}
6080: 20 31 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   1.  test_expr e
6090: 78 70 72 2d 36 2e 34 30 20 22 74 31 3d 27 61 5c  xpr-6.40 "t1='a\
60a0: 75 31 32 33 34 62 27 2c 20 74 32 3d 27 61 5c 5b  u1234b', t2='a\[
60b0: 61 2d 5c 75 31 32 33 34 5c 5d 62 27 22 20 7b 74  a-\u1234\]b'" {t
60c0: 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 20 20 74  1 GLOB t2} 1.  t
60d0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e  est_expr expr-6.
60e0: 34 31 20 22 74 31 3d 27 61 5c 75 31 32 33 34 62  41 "t1='a\u1234b
60f0: 27 2c 20 74 32 3d 27 61 5c 5b 61 2d 5c 75 31 32  ', t2='a\[a-\u12
6100: 33 33 5c 5d 62 27 22 20 7b 74 31 20 47 4c 4f 42  33\]b'" {t1 GLOB
6110: 20 74 32 7d 20 30 0a 7d 0a 0a 74 65 73 74 5f 65   t2} 0.}..test_e
6120: 78 70 72 20 65 78 70 72 2d 36 2e 35 31 20 7b 74  xpr expr-6.51 {t
6130: 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 78 79 7a  1='ABC', t2='xyz
6140: 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20  '} {t1 GLOB t2} 
6150: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
6160: 2d 36 2e 35 32 20 7b 74 31 3d 27 41 42 43 27 2c  -6.52 {t1='ABC',
6170: 20 74 32 3d 27 61 62 63 27 7d 20 7b 74 31 20 47   t2='abc'} {t1 G
6180: 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  LOB t2} 0.test_e
6190: 78 70 72 20 65 78 70 72 2d 36 2e 35 33 20 7b 74  xpr expr-6.53 {t
61a0: 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 61 3f 63  1='ABC', t2='a?c
61b0: 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20  '} {t1 GLOB t2} 
61c0: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
61d0: 2d 36 2e 35 34 20 7b 74 31 3d 27 41 42 43 27 2c  -6.54 {t1='ABC',
61e0: 20 74 32 3d 27 41 3f 43 27 7d 20 7b 74 31 20 47   t2='A?C'} {t1 G
61f0: 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65  LOB t2} 1.test_e
6200: 78 70 72 20 65 78 70 72 2d 36 2e 35 35 20 7b 74  xpr expr-6.55 {t
6210: 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 61 62 63  1='ABC', t2='abc
6220: 3f 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d  ?'} {t1 GLOB t2}
6230: 20 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   0.test_expr exp
6240: 72 2d 36 2e 35 36 20 7b 74 31 3d 27 41 42 43 27  r-6.56 {t1='ABC'
6250: 2c 20 74 32 3d 27 61 2a 63 27 7d 20 7b 74 31 20  , t2='a*c'} {t1 
6260: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
6270: 65 78 70 72 20 65 78 70 72 2d 36 2e 35 37 20 7b  expr expr-6.57 {
6280: 74 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 41 2a  t1='ABC', t2='A*
6290: 43 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d  C'} {t1 GLOB t2}
62a0: 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70   1.test_expr exp
62b0: 72 2d 36 2e 35 38 20 7b 74 31 3d 27 41 42 78 79  r-6.58 {t1='ABxy
62c0: 7a 7a 79 43 27 2c 20 74 32 3d 27 41 2a 43 27 7d  zzyC', t2='A*C'}
62d0: 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a   {t1 GLOB t2} 1.
62e0: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36  test_expr expr-6
62f0: 2e 35 39 20 7b 74 31 3d 27 41 42 78 79 7a 7a 79  .59 {t1='ABxyzzy
6300: 27 2c 20 74 32 3d 27 41 2a 43 27 7d 20 7b 74 31  ', t2='A*C'} {t1
6310: 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74   GLOB t2} 0.test
6320: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 30 20  _expr expr-6.60 
6330: 7b 74 31 3d 27 41 42 78 79 7a 7a 79 43 78 27 2c  {t1='ABxyzzyCx',
6340: 20 74 32 3d 27 41 2a 43 27 7d 20 7b 74 31 20 47   t2='A*C'} {t1 G
6350: 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f 65  LOB t2} 0.test_e
6360: 78 70 72 20 65 78 70 72 2d 36 2e 36 31 20 7b 74  xpr expr-6.61 {t
6370: 31 3d 27 41 42 43 27 2c 20 74 32 3d 27 78 79 7a  1='ABC', t2='xyz
6380: 27 7d 20 7b 74 31 20 4e 4f 54 20 47 4c 4f 42 20  '} {t1 NOT GLOB 
6390: 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20  t2} 1.test_expr 
63a0: 65 78 70 72 2d 36 2e 36 32 20 7b 74 31 3d 27 41  expr-6.62 {t1='A
63b0: 42 43 27 2c 20 74 32 3d 27 41 42 43 27 7d 20 7b  BC', t2='ABC'} {
63c0: 74 31 20 4e 4f 54 20 47 4c 4f 42 20 74 32 7d 20  t1 NOT GLOB t2} 
63d0: 30 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72  0.test_expr expr
63e0: 2d 36 2e 36 33 20 7b 74 31 3d 27 41 42 43 27 2c  -6.63 {t1='ABC',
63f0: 20 74 32 3d 27 41 5b 42 78 5d 43 27 7d 20 7b 74   t2='A[Bx]C'} {t
6400: 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73  1 GLOB t2} 1.tes
6410: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 34  t_expr expr-6.64
6420: 20 7b 74 31 3d 27 41 42 43 27 2c 20 74 32 3d 27   {t1='ABC', t2='
6430: 41 5b 43 78 5d 43 27 7d 20 7b 74 31 20 47 4c 4f  A[Cx]C'} {t1 GLO
6440: 42 20 74 32 7d 20 30 0a 74 65 73 74 5f 65 78 70  B t2} 0.test_exp
6450: 72 20 65 78 70 72 2d 36 2e 36 35 20 7b 74 31 3d  r expr-6.65 {t1=
6460: 27 41 42 43 27 2c 20 74 32 3d 27 41 5b 41 2d 44  'ABC', t2='A[A-D
6470: 5d 43 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  ]C'} {t1 GLOB t2
6480: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
6490: 70 72 2d 36 2e 36 36 20 7b 74 31 3d 27 41 42 43  pr-6.66 {t1='ABC
64a0: 27 2c 20 74 32 3d 27 41 5b 5e 41 2d 44 5d 43 27  ', t2='A[^A-D]C'
64b0: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
64c0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
64d0: 36 2e 36 37 20 7b 74 31 3d 27 41 42 43 27 2c 20  6.67 {t1='ABC', 
64e0: 74 32 3d 27 41 5b 61 2d 64 43 5d 43 27 7d 20 7b  t2='A[a-dC]C'} {
64f0: 74 31 20 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65  t1 GLOB t2} 0.te
6500: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36  st_expr expr-6.6
6510: 38 20 7b 74 31 3d 27 41 42 43 27 2c 20 74 32 3d  8 {t1='ABC', t2=
6520: 27 41 5b 5e 61 2d 64 43 5d 43 27 7d 20 7b 74 31  'A[^a-dC]C'} {t1
6530: 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74   GLOB t2} 1.test
6540: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 39 61  _expr expr-6.69a
6550: 20 7b 74 31 3d 27 41 42 43 27 2c 20 74 32 3d 27   {t1='ABC', t2='
6560: 41 5b 5d 42 5d 43 27 7d 20 7b 74 31 20 47 4c 4f  A[]B]C'} {t1 GLO
6570: 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78 70  B t2} 1.test_exp
6580: 72 20 65 78 70 72 2d 36 2e 36 39 62 20 7b 74 31  r expr-6.69b {t1
6590: 3d 27 41 5d 43 27 2c 20 74 32 3d 27 41 5b 5d 42  ='A]C', t2='A[]B
65a0: 5d 43 27 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32  ]C'} {t1 GLOB t2
65b0: 7d 20 31 0a 74 65 73 74 5f 65 78 70 72 20 65 78  } 1.test_expr ex
65c0: 70 72 2d 36 2e 37 30 61 20 7b 74 31 3d 27 41 42  pr-6.70a {t1='AB
65d0: 43 27 2c 20 74 32 3d 27 41 5b 5e 5d 42 5d 43 27  C', t2='A[^]B]C'
65e0: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 30  } {t1 GLOB t2} 0
65f0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
6600: 36 2e 37 30 62 20 7b 74 31 3d 27 41 78 43 27 2c  6.70b {t1='AxC',
6610: 20 74 32 3d 27 41 5b 5e 5d 42 5d 43 27 7d 20 7b   t2='A[^]B]C'} {
6620: 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65  t1 GLOB t2} 1.te
6630: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 37  st_expr expr-6.7
6640: 30 63 20 7b 74 31 3d 27 41 5d 43 27 2c 20 74 32  0c {t1='A]C', t2
6650: 3d 27 41 5b 5e 5d 42 5d 43 27 7d 20 7b 74 31 20  ='A[^]B]C'} {t1 
6660: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
6670: 65 78 70 72 20 65 78 70 72 2d 36 2e 37 31 20 7b  expr expr-6.71 {
6680: 74 31 3d 27 41 42 43 44 45 46 47 27 2c 20 74 32  t1='ABCDEFG', t2
6690: 3d 27 41 2a 5b 44 45 5d 47 27 7d 20 7b 74 31 20  ='A*[DE]G'} {t1 
66a0: 47 4c 4f 42 20 74 32 7d 20 30 0a 74 65 73 74 5f  GLOB t2} 0.test_
66b0: 65 78 70 72 20 65 78 70 72 2d 36 2e 37 32 20 7b  expr expr-6.72 {
66c0: 74 31 3d 27 41 42 43 44 45 46 47 27 2c 20 74 32  t1='ABCDEFG', t2
66d0: 3d 27 41 2a 5b 5e 44 45 5d 47 27 7d 20 7b 74 31  ='A*[^DE]G'} {t1
66e0: 20 47 4c 4f 42 20 74 32 7d 20 31 0a 74 65 73 74   GLOB t2} 1.test
66f0: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 37 33 20  _expr expr-6.73 
6700: 7b 74 31 3d 27 41 42 43 44 45 46 47 27 2c 20 74  {t1='ABCDEFG', t
6710: 32 3d 27 41 2a 3f 47 27 7d 20 7b 74 31 20 47 4c  2='A*?G'} {t1 GL
6720: 4f 42 20 74 32 7d 20 31 0a 74 65 73 74 5f 65 78  OB t2} 1.test_ex
6730: 70 72 20 65 78 70 72 2d 36 2e 37 34 20 7b 74 31  pr expr-6.74 {t1
6740: 3d 27 41 43 27 2c 20 74 32 3d 27 41 2a 43 27 7d  ='AC', t2='A*C'}
6750: 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 31 0a   {t1 GLOB t2} 1.
6760: 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 36  test_expr expr-6
6770: 2e 37 35 20 7b 74 31 3d 27 41 43 27 2c 20 74 32  .75 {t1='AC', t2
6780: 3d 27 41 2a 3f 43 27 7d 20 7b 74 31 20 47 4c 4f  ='A*?C'} {t1 GLO
6790: 42 20 74 32 7d 20 30 0a 0a 74 65 73 74 5f 65 78  B t2} 0..test_ex
67a0: 70 72 20 65 78 70 72 2d 36 2e 36 33 20 7b 74 31  pr expr-6.63 {t1
67b0: 3d 4e 55 4c 4c 2c 20 74 32 3d 27 61 2a 3f 63 27  =NULL, t2='a*?c'
67c0: 7d 20 7b 74 31 20 47 4c 4f 42 20 74 32 7d 20 7b  } {t1 GLOB t2} {
67d0: 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 20 65 78  {}}.test_expr ex
67e0: 70 72 2d 36 2e 36 34 20 7b 74 31 3d 27 61 63 27  pr-6.64 {t1='ac'
67f0: 2c 20 74 32 3d 4e 55 4c 4c 7d 20 7b 74 31 20 47  , t2=NULL} {t1 G
6800: 4c 4f 42 20 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73  LOB t2} {{}}.tes
6810: 74 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 35  t_expr expr-6.65
6820: 20 7b 74 31 3d 4e 55 4c 4c 2c 20 74 32 3d 27 61   {t1=NULL, t2='a
6830: 2a 3f 63 27 7d 20 7b 74 31 20 4e 4f 54 20 47 4c  *?c'} {t1 NOT GL
6840: 4f 42 20 74 32 7d 20 7b 7b 7d 7d 0a 74 65 73 74  OB t2} {{}}.test
6850: 5f 65 78 70 72 20 65 78 70 72 2d 36 2e 36 36 20  _expr expr-6.66 
6860: 7b 74 31 3d 27 61 63 27 2c 20 74 32 3d 4e 55 4c  {t1='ac', t2=NUL
6870: 4c 7d 20 7b 74 31 20 4e 4f 54 20 47 4c 4f 42 20  L} {t1 NOT GLOB 
6880: 74 32 7d 20 7b 7b 7d 7d 0a 0a 23 20 43 68 65 63  t2} {{}}..# Chec
6890: 6b 20 74 68 61 74 20 74 68 65 20 61 66 66 69 6e  k that the affin
68a0: 69 74 79 20 6f 66 20 61 20 43 41 53 54 20 65 78  ity of a CAST ex
68b0: 70 72 65 73 73 69 6f 6e 20 69 73 20 63 61 6c 63  pression is calc
68c0: 75 6c 61 74 65 64 20 63 6f 72 72 65 63 74 6c 79  ulated correctly
68d0: 2e 0a 69 66 63 61 70 61 62 6c 65 20 63 61 73 74  ..ifcapable cast
68e0: 20 7b 0a 20 20 74 65 73 74 5f 65 78 70 72 20 65   {.  test_expr e
68f0: 78 70 72 2d 36 2e 36 37 20 7b 74 31 3d 27 30 31  xpr-6.67 {t1='01
6900: 27 2c 20 74 32 3d 31 7d 20 7b 74 31 20 3d 20 74  ', t2=1} {t1 = t
6910: 32 7d 20 30 0a 20 20 74 65 73 74 5f 65 78 70 72  2} 0.  test_expr
6920: 20 65 78 70 72 2d 36 2e 36 38 20 7b 74 31 3d 27   expr-6.68 {t1='
6930: 31 27 2c 20 74 32 3d 31 7d 20 7b 74 31 20 3d 20  1', t2=1} {t1 = 
6940: 74 32 7d 20 31 0a 20 20 74 65 73 74 5f 65 78 70  t2} 1.  test_exp
6950: 72 20 65 78 70 72 2d 36 2e 36 39 20 7b 74 31 3d  r expr-6.69 {t1=
6960: 27 30 31 27 2c 20 74 32 3d 31 7d 20 7b 43 41 53  '01', t2=1} {CAS
6970: 54 28 74 31 20 41 53 20 49 4e 54 45 47 45 52 29  T(t1 AS INTEGER)
6980: 20 3d 20 74 32 7d 20 31 0a 7d 0a 0a 74 65 73 74   = t2} 1.}..test
6990: 5f 65 78 70 72 20 65 78 70 72 2d 63 61 73 65 2e  _expr expr-case.
69a0: 31 20 7b 69 31 3d 31 2c 20 69 32 3d 32 7d 20 5c  1 {i1=1, i2=2} \
69b0: 0a 09 7b 43 41 53 45 20 57 48 45 4e 20 69 31 20  ..{CASE WHEN i1 
69c0: 3d 20 69 32 20 54 48 45 4e 20 27 65 71 27 20 45  = i2 THEN 'eq' E
69d0: 4c 53 45 20 27 6e 65 27 20 45 4e 44 7d 20 6e 65  LSE 'ne' END} ne
69e0: 0a 74 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d  .test_expr expr-
69f0: 63 61 73 65 2e 32 20 7b 69 31 3d 32 2c 20 69 32  case.2 {i1=2, i2
6a00: 3d 32 7d 20 5c 0a 09 7b 43 41 53 45 20 57 48 45  =2} \..{CASE WHE
6a10: 4e 20 69 31 20 3d 20 69 32 20 54 48 45 4e 20 27  N i1 = i2 THEN '
6a20: 65 71 27 20 45 4c 53 45 20 27 6e 65 27 20 45 4e  eq' ELSE 'ne' EN
6a30: 44 7d 20 65 71 0a 74 65 73 74 5f 65 78 70 72 20  D} eq.test_expr 
6a40: 65 78 70 72 2d 63 61 73 65 2e 33 20 7b 69 31 3d  expr-case.3 {i1=
6a50: 4e 55 4c 4c 2c 20 69 32 3d 32 7d 20 5c 0a 09 7b  NULL, i2=2} \..{
6a60: 43 41 53 45 20 57 48 45 4e 20 69 31 20 3d 20 69  CASE WHEN i1 = i
6a70: 32 20 54 48 45 4e 20 27 65 71 27 20 45 4c 53 45  2 THEN 'eq' ELSE
6a80: 20 27 6e 65 27 20 45 4e 44 7d 20 6e 65 0a 74 65   'ne' END} ne.te
6a90: 73 74 5f 65 78 70 72 20 65 78 70 72 2d 63 61 73  st_expr expr-cas
6aa0: 65 2e 34 20 7b 69 31 3d 32 2c 20 69 32 3d 4e 55  e.4 {i1=2, i2=NU
6ab0: 4c 4c 7d 20 5c 0a 09 7b 43 41 53 45 20 57 48 45  LL} \..{CASE WHE
6ac0: 4e 20 69 31 20 3d 20 69 32 20 54 48 45 4e 20 27  N i1 = i2 THEN '
6ad0: 65 71 27 20 45 4c 53 45 20 27 6e 65 27 20 45 4e  eq' ELSE 'ne' EN
6ae0: 44 7d 20 6e 65 0a 74 65 73 74 5f 65 78 70 72 20  D} ne.test_expr 
6af0: 65 78 70 72 2d 63 61 73 65 2e 35 20 7b 69 31 3d  expr-case.5 {i1=
6b00: 32 7d 20 5c 0a 09 7b 43 41 53 45 20 69 31 20 57  2} \..{CASE i1 W
6b10: 48 45 4e 20 31 20 54 48 45 4e 20 27 6f 6e 65 27  HEN 1 THEN 'one'
6b20: 20 57 48 45 4e 20 32 20 54 48 45 4e 20 27 74 77   WHEN 2 THEN 'tw
6b30: 6f 27 20 45 4c 53 45 20 27 65 72 72 6f 72 27 20  o' ELSE 'error' 
6b40: 45 4e 44 7d 20 74 77 6f 0a 74 65 73 74 5f 65 78  END} two.test_ex
6b50: 70 72 20 65 78 70 72 2d 63 61 73 65 2e 36 20 7b  pr expr-case.6 {
6b60: 69 31 3d 31 7d 20 5c 0a 09 7b 43 41 53 45 20 69  i1=1} \..{CASE i
6b70: 31 20 57 48 45 4e 20 31 20 54 48 45 4e 20 27 6f  1 WHEN 1 THEN 'o
6b80: 6e 65 27 20 57 48 45 4e 20 4e 55 4c 4c 20 54 48  ne' WHEN NULL TH
6b90: 45 4e 20 27 74 77 6f 27 20 45 4c 53 45 20 27 65  EN 'two' ELSE 'e
6ba0: 72 72 6f 72 27 20 45 4e 44 7d 20 6f 6e 65 0a 74  rror' END} one.t
6bb0: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 63 61  est_expr expr-ca
6bc0: 73 65 2e 37 20 7b 69 31 3d 32 7d 20 5c 0a 09 7b  se.7 {i1=2} \..{
6bd0: 43 41 53 45 20 69 31 20 57 48 45 4e 20 31 20 54  CASE i1 WHEN 1 T
6be0: 48 45 4e 20 27 6f 6e 65 27 20 57 48 45 4e 20 4e  HEN 'one' WHEN N
6bf0: 55 4c 4c 20 54 48 45 4e 20 27 74 77 6f 27 20 45  ULL THEN 'two' E
6c00: 4c 53 45 20 27 65 72 72 6f 72 27 20 45 4e 44 7d  LSE 'error' END}
6c10: 20 65 72 72 6f 72 0a 74 65 73 74 5f 65 78 70 72   error.test_expr
6c20: 20 65 78 70 72 2d 63 61 73 65 2e 38 20 7b 69 31   expr-case.8 {i1
6c30: 3d 33 7d 20 5c 0a 09 7b 43 41 53 45 20 69 31 20  =3} \..{CASE i1 
6c40: 57 48 45 4e 20 31 20 54 48 45 4e 20 27 6f 6e 65  WHEN 1 THEN 'one
6c50: 27 20 57 48 45 4e 20 4e 55 4c 4c 20 54 48 45 4e  ' WHEN NULL THEN
6c60: 20 27 74 77 6f 27 20 45 4c 53 45 20 27 65 72 72   'two' ELSE 'err
6c70: 6f 72 27 20 45 4e 44 7d 20 65 72 72 6f 72 0a 74  or' END} error.t
6c80: 65 73 74 5f 65 78 70 72 20 65 78 70 72 2d 63 61  est_expr expr-ca
6c90: 73 65 2e 39 20 7b 69 31 3d 33 7d 20 5c 0a 09 7b  se.9 {i1=3} \..{
6ca0: 43 41 53 45 20 69 31 20 57 48 45 4e 20 31 20 54  CASE i1 WHEN 1 T
6cb0: 48 45 4e 20 27 6f 6e 65 27 20 57 48 45 4e 20 32  HEN 'one' WHEN 2
6cc0: 20 54 48 45 4e 20 27 74 77 6f 27 20 45 4c 53 45   THEN 'two' ELSE
6cd0: 20 27 65 72 72 6f 72 27 20 45 4e 44 7d 20 65 72   'error' END} er
6ce0: 72 6f 72 0a 74 65 73 74 5f 65 78 70 72 20 65 78  ror.test_expr ex
6cf0: 70 72 2d 63 61 73 65 2e 31 30 20 7b 69 31 3d 33  pr-case.10 {i1=3
6d00: 7d 20 5c 0a 09 7b 43 41 53 45 20 69 31 20 57 48  } \..{CASE i1 WH
6d10: 45 4e 20 31 20 54 48 45 4e 20 27 6f 6e 65 27 20  EN 1 THEN 'one' 
6d20: 57 48 45 4e 20 32 20 54 48 45 4e 20 27 74 77 6f  WHEN 2 THEN 'two
6d30: 27 20 45 4e 44 7d 20 7b 7b 7d 7d 0a 74 65 73 74  ' END} {{}}.test
6d40: 5f 65 78 70 72 20 65 78 70 72 2d 63 61 73 65 2e  _expr expr-case.
6d50: 31 31 20 7b 69 31 3d 6e 75 6c 6c 7d 20 5c 0a 09  11 {i1=null} \..
6d60: 7b 43 41 53 45 20 69 31 20 57 48 45 4e 20 31 20  {CASE i1 WHEN 1 
6d70: 54 48 45 4e 20 27 6f 6e 65 27 20 57 48 45 4e 20  THEN 'one' WHEN 
6d80: 32 20 54 48 45 4e 20 27 74 77 6f 27 20 45 4c 53  2 THEN 'two' ELS
6d90: 45 20 33 20 45 4e 44 7d 20 33 0a 74 65 73 74 5f  E 3 END} 3.test_
6da0: 65 78 70 72 20 65 78 70 72 2d 63 61 73 65 2e 31  expr expr-case.1
6db0: 32 20 7b 69 31 3d 31 7d 20 5c 0a 09 7b 43 41 53  2 {i1=1} \..{CAS
6dc0: 45 20 69 31 20 57 48 45 4e 20 31 20 54 48 45 4e  E i1 WHEN 1 THEN
6dd0: 20 6e 75 6c 6c 20 57 48 45 4e 20 32 20 54 48 45   null WHEN 2 THE
6de0: 4e 20 27 74 77 6f 27 20 45 4c 53 45 20 33 20 45  N 'two' ELSE 3 E
6df0: 4e 44 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78  ND} {{}}.test_ex
6e00: 70 72 20 65 78 70 72 2d 63 61 73 65 2e 31 33 20  pr expr-case.13 
6e10: 7b 69 31 3d 37 7d 20 5c 0a 09 7b 20 43 41 53 45  {i1=7} \..{ CASE
6e20: 20 57 48 45 4e 20 69 31 20 3c 20 35 20 54 48 45   WHEN i1 < 5 THE
6e30: 4e 20 27 6c 6f 77 27 20 0a 09 20 20 20 20 20 20  N 'low' ..      
6e40: 20 57 48 45 4e 20 69 31 20 3c 20 31 30 20 54 48   WHEN i1 < 10 TH
6e50: 45 4e 20 27 6d 65 64 69 75 6d 27 20 0a 20 20 20  EN 'medium' .   
6e60: 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 4e              WHEN
6e70: 20 69 31 20 3c 20 31 35 20 54 48 45 4e 20 27 68   i1 < 15 THEN 'h
6e80: 69 67 68 27 20 45 4c 53 45 20 27 65 72 72 6f 72  igh' ELSE 'error
6e90: 27 20 45 4e 44 7d 20 6d 65 64 69 75 6d 0a 0a 0a  ' END} medium...
6ea0: 23 20 54 68 65 20 73 71 6c 69 74 65 45 78 70 72  # The sqliteExpr
6eb0: 49 66 46 61 6c 73 65 20 61 6e 64 20 73 71 6c 69  IfFalse and sqli
6ec0: 74 65 45 78 70 72 49 66 54 72 75 65 20 72 6f 75  teExprIfTrue rou
6ed0: 74 69 6e 65 73 20 61 72 65 20 6f 6e 6c 79 0a 23  tines are only.#
6ee0: 20 65 78 65 63 75 74 65 64 20 61 73 20 70 61 72   executed as par
6ef0: 74 20 6f 66 20 61 20 57 48 45 52 45 20 63 6c 61  t of a WHERE cla
6f00: 75 73 65 2e 20 20 43 72 65 61 74 65 20 61 20 74  use.  Create a t
6f10: 61 62 6c 65 20 73 75 69 74 61 62 6c 65 0a 23 20  able suitable.# 
6f20: 66 6f 72 20 74 65 73 74 69 6e 67 20 74 68 65 73  for testing thes
6f30: 65 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 23 0a 65  e functions..#.e
6f40: 78 65 63 73 71 6c 20 7b 44 52 4f 50 20 54 41 42  xecsql {DROP TAB
6f50: 4c 45 20 74 65 73 74 31 7d 0a 65 78 65 63 73 71  LE test1}.execsq
6f60: 6c 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 20  l {CREATE TABLE 
6f70: 74 65 73 74 31 28 61 20 69 6e 74 2c 20 62 20 69  test1(a int, b i
6f80: 6e 74 29 3b 7d 0a 66 6f 72 20 7b 73 65 74 20 69  nt);}.for {set i
6f90: 20 31 7d 20 7b 24 69 3c 3d 32 30 7d 20 7b 69 6e   1} {$i<=20} {in
6fa0: 63 72 20 69 7d 20 7b 0a 20 20 65 78 65 63 73 71  cr i} {.  execsq
6fb0: 6c 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  l "INSERT INTO t
6fc0: 65 73 74 31 20 56 41 4c 55 45 53 28 24 69 2c 5b  est1 VALUES($i,[
6fd0: 65 78 70 72 20 7b 31 3c 3c 24 69 7d 5d 29 22 0a  expr {1<<$i}])".
6fe0: 7d 0a 65 78 65 63 73 71 6c 20 22 49 4e 53 45 52  }.execsql "INSER
6ff0: 54 20 49 4e 54 4f 20 74 65 73 74 31 20 56 41 4c  T INTO test1 VAL
7000: 55 45 53 28 4e 55 4c 4c 2c 30 29 22 0a 64 6f 5f  UES(NULL,0)".do_
7010: 74 65 73 74 20 65 78 70 72 2d 37 2e 31 20 7b 0a  test expr-7.1 {.
7020: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
7030: 54 20 2a 20 46 52 4f 4d 20 74 65 73 74 31 20 4f  T * FROM test1 O
7040: 52 44 45 52 20 42 59 20 61 7d 0a 7d 20 7b 7b 7d  RDER BY a}.} {{}
7050: 20 30 20 31 20 32 20 32 20 34 20 33 20 38 20 34   0 1 2 2 4 3 8 4
7060: 20 31 36 20 35 20 33 32 20 36 20 36 34 20 37 20   16 5 32 6 64 7 
7070: 31 32 38 20 38 20 32 35 36 20 39 20 35 31 32 20  128 8 256 9 512 
7080: 31 30 20 31 30 32 34 20 31 31 20 32 30 34 38 20  10 1024 11 2048 
7090: 31 32 20 34 30 39 36 20 31 33 20 38 31 39 32 20  12 4096 13 8192 
70a0: 31 34 20 31 36 33 38 34 20 31 35 20 33 32 37 36  14 16384 15 3276
70b0: 38 20 31 36 20 36 35 35 33 36 20 31 37 20 31 33  8 16 65536 17 13
70c0: 31 30 37 32 20 31 38 20 32 36 32 31 34 34 20 31  1072 18 262144 1
70d0: 39 20 35 32 34 32 38 38 20 32 30 20 31 30 34 38  9 524288 20 1048
70e0: 35 37 36 7d 0a 0a 70 72 6f 63 20 74 65 73 74 5f  576}..proc test_
70f0: 65 78 70 72 32 20 7b 6e 61 6d 65 20 65 78 70 72  expr2 {name expr
7100: 20 72 65 73 75 6c 74 7d 20 7b 0a 20 20 64 6f 5f   result} {.  do_
7110: 74 65 73 74 20 24 6e 61 6d 65 20 5b 66 6f 72 6d  test $name [form
7120: 61 74 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  at {.    execsql
7130: 20 7b 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20   {SELECT a FROM 
7140: 74 65 73 74 31 20 57 48 45 52 45 20 25 73 20 4f  test1 WHERE %s O
7150: 52 44 45 52 20 42 59 20 61 7d 0a 20 20 7d 20 24  RDER BY a}.  } $
7160: 65 78 70 72 5d 20 24 72 65 73 75 6c 74 0a 7d 0a  expr] $result.}.
7170: 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72  .test_expr2 expr
7180: 2d 37 2e 32 20 20 7b 61 3c 31 30 20 41 4e 44 20  -7.2  {a<10 AND 
7190: 61 3e 38 7d 20 20 20 20 20 20 20 20 20 20 20 20  a>8}            
71a0: 20 20 20 20 20 20 7b 39 7d 0a 74 65 73 74 5f 65        {9}.test_e
71b0: 78 70 72 32 20 65 78 70 72 2d 37 2e 33 20 20 7b  xpr2 expr-7.3  {
71c0: 61 3c 3d 31 30 20 41 4e 44 20 61 3e 3d 38 7d 20  a<=10 AND a>=8} 
71d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
71e0: 38 20 39 20 31 30 7d 0a 74 65 73 74 5f 65 78 70  8 9 10}.test_exp
71f0: 72 32 20 65 78 70 72 2d 37 2e 34 20 20 7b 61 3e  r2 expr-7.4  {a>
7200: 3d 38 20 41 4e 44 20 61 3c 3d 31 30 7d 20 20 20  =8 AND a<=10}   
7210: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 38 20               {8 
7220: 39 20 31 30 7d 0a 74 65 73 74 5f 65 78 70 72 32  9 10}.test_expr2
7230: 20 65 78 70 72 2d 37 2e 35 20 20 7b 61 3e 3d 32   expr-7.5  {a>=2
7240: 30 20 4f 52 20 61 3c 3d 31 7d 20 20 20 20 20 20  0 OR a<=1}      
7250: 20 20 20 20 20 20 20 20 20 20 20 7b 31 20 32 30             {1 20
7260: 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70  }.test_expr2 exp
7270: 72 2d 37 2e 36 20 20 7b 62 21 3d 34 20 41 4e 44  r-7.6  {b!=4 AND
7280: 20 61 3c 3d 33 7d 20 20 20 20 20 20 20 20 20 20   a<=3}          
7290: 20 20 20 20 20 20 20 7b 31 20 33 7d 0a 74 65 73         {1 3}.tes
72a0: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 37  t_expr2 expr-7.7
72b0: 20 20 7b 62 3d 3d 38 20 4f 52 20 62 3d 3d 31 36    {b==8 OR b==16
72c0: 20 4f 52 20 62 3d 3d 33 32 7d 20 20 20 20 20 20   OR b==32}      
72d0: 20 20 7b 33 20 34 20 35 7d 0a 74 65 73 74 5f 65    {3 4 5}.test_e
72e0: 78 70 72 32 20 65 78 70 72 2d 37 2e 38 20 20 7b  xpr2 expr-7.8  {
72f0: 4e 4f 54 20 62 3c 3e 38 20 4f 52 20 62 3d 3d 31  NOT b<>8 OR b==1
7300: 30 32 34 7d 20 20 20 20 20 20 20 20 20 20 20 7b  024}           {
7310: 33 20 31 30 7d 0a 74 65 73 74 5f 65 78 70 72 32  3 10}.test_expr2
7320: 20 65 78 70 72 2d 37 2e 39 20 20 7b 62 20 4c 49   expr-7.9  {b LI
7330: 4b 45 20 27 31 30 25 27 7d 20 20 20 20 20 20 20  KE '10%'}       
7340: 20 20 20 20 20 20 20 20 20 20 20 7b 31 30 20 32             {10 2
7350: 30 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  0}.test_expr2 ex
7360: 70 72 2d 37 2e 31 30 20 7b 62 20 4c 49 4b 45 20  pr-7.10 {b LIKE 
7370: 27 5f 34 27 7d 20 20 20 20 20 20 20 20 20 20 20  '_4'}           
7380: 20 20 20 20 20 20 20 20 7b 36 7d 0a 74 65 73 74          {6}.test
7390: 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 31 31  _expr2 expr-7.11
73a0: 20 7b 61 20 47 4c 4f 42 20 27 31 3f 27 7d 20 20   {a GLOB '1?'}  
73b0: 20 20 20 20 20 20 20 20 20 20 7b 31 30 20 31 31            {10 11
73c0: 20 31 32 20 31 33 20 31 34 20 31 35 20 31 36 20   12 13 14 15 16 
73d0: 31 37 20 31 38 20 31 39 7d 0a 74 65 73 74 5f 65  17 18 19}.test_e
73e0: 78 70 72 32 20 65 78 70 72 2d 37 2e 31 32 20 7b  xpr2 expr-7.12 {
73f0: 62 20 47 4c 4f 42 20 27 31 2a 34 27 7d 20 20 20  b GLOB '1*4'}   
7400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
7410: 31 30 20 31 34 7d 0a 74 65 73 74 5f 65 78 70 72  10 14}.test_expr
7420: 32 20 65 78 70 72 2d 37 2e 31 33 20 7b 62 20 47  2 expr-7.13 {b G
7430: 4c 4f 42 20 27 2a 31 5b 34 35 36 5d 27 7d 20 20  LOB '*1[456]'}  
7440: 20 20 20 20 20 20 20 20 20 20 20 20 7b 34 7d 0a              {4}.
7450: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
7460: 37 2e 31 34 20 7b 61 20 49 53 4e 55 4c 4c 7d 20  7.14 {a ISNULL} 
7470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7480: 20 20 20 20 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65       {{}}.test_e
7490: 78 70 72 32 20 65 78 70 72 2d 37 2e 31 35 20 7b  xpr2 expr-7.15 {
74a0: 61 20 4e 4f 54 4e 55 4c 4c 20 41 4e 44 20 61 3c  a NOTNULL AND a<
74b0: 33 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  3}             {
74c0: 31 20 32 7d 0a 74 65 73 74 5f 65 78 70 72 32 20  1 2}.test_expr2 
74d0: 65 78 70 72 2d 37 2e 31 36 20 7b 61 20 41 4e 44  expr-7.16 {a AND
74e0: 20 61 3c 33 7d 20 20 20 20 20 20 20 20 20 20 20   a<3}           
74f0: 20 20 20 20 20 20 20 20 20 20 7b 31 20 32 7d 0a            {1 2}.
7500: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
7510: 37 2e 31 37 20 7b 4e 4f 54 20 61 7d 20 20 20 20  7.17 {NOT a}    
7520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7530: 20 20 20 20 20 7b 7d 0a 74 65 73 74 5f 65 78 70       {}.test_exp
7540: 72 32 20 65 78 70 72 2d 37 2e 31 38 20 7b 61 3d  r2 expr-7.18 {a=
7550: 3d 31 31 20 4f 52 20 28 62 3e 31 30 30 30 20 41  =11 OR (b>1000 A
7560: 4e 44 20 62 3c 32 30 30 30 29 7d 20 20 7b 31 30  ND b<2000)}  {10
7570: 20 31 31 7d 0a 74 65 73 74 5f 65 78 70 72 32 20   11}.test_expr2 
7580: 65 78 70 72 2d 37 2e 31 39 20 7b 61 3c 3d 31 20  expr-7.19 {a<=1 
7590: 4f 52 20 61 3e 3d 32 30 7d 20 20 20 20 20 20 20  OR a>=20}       
75a0: 20 20 20 20 20 20 20 20 20 20 7b 31 20 32 30 7d            {1 20}
75b0: 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72  .test_expr2 expr
75c0: 2d 37 2e 32 30 20 7b 61 3c 31 20 4f 52 20 61 3e  -7.20 {a<1 OR a>
75d0: 32 30 7d 20 20 20 20 20 20 20 20 20 20 20 20 20  20}             
75e0: 20 20 20 20 20 20 7b 7d 0a 74 65 73 74 5f 65 78        {}.test_ex
75f0: 70 72 32 20 65 78 70 72 2d 37 2e 32 31 20 7b 61  pr2 expr-7.21 {a
7600: 3e 31 39 20 4f 52 20 61 3c 31 7d 20 20 20 20 20  >19 OR a<1}     
7610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 32                {2
7620: 30 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  0}.test_expr2 ex
7630: 70 72 2d 37 2e 32 32 20 7b 61 21 3d 31 20 4f 52  pr-7.22 {a!=1 OR
7640: 20 61 3d 31 30 30 7d 20 5c 0a 20 20 20 20 20 20   a=100} \.      
7650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7660: 20 20 20 7b 32 20 33 20 34 20 35 20 36 20 37 20     {2 3 4 5 6 7 
7670: 38 20 39 20 31 30 20 31 31 20 31 32 20 31 33 20  8 9 10 11 12 13 
7680: 31 34 20 31 35 20 31 36 20 31 37 20 31 38 20 31  14 15 16 17 18 1
7690: 39 20 32 30 7d 0a 74 65 73 74 5f 65 78 70 72 32  9 20}.test_expr2
76a0: 20 65 78 70 72 2d 37 2e 32 33 20 7b 28 61 20 6e   expr-7.23 {(a n
76b0: 6f 74 6e 75 6c 6c 20 41 4e 44 20 61 3c 34 29 20  otnull AND a<4) 
76c0: 4f 52 20 61 3d 3d 38 7d 20 20 20 7b 31 20 32 20  OR a==8}   {1 2 
76d0: 33 20 38 7d 0a 74 65 73 74 5f 65 78 70 72 32 20  3 8}.test_expr2 
76e0: 65 78 70 72 2d 37 2e 32 34 20 7b 61 20 4c 49 4b  expr-7.24 {a LIK
76f0: 45 20 27 32 5f 27 20 4f 52 20 61 3d 3d 38 7d 20  E '2_' OR a==8} 
7700: 20 20 20 20 20 20 20 20 20 20 7b 38 20 32 30 7d            {8 20}
7710: 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72  .test_expr2 expr
7720: 2d 37 2e 32 35 20 7b 61 20 47 4c 4f 42 20 27 32  -7.25 {a GLOB '2
7730: 3f 27 20 4f 52 20 61 3d 3d 38 7d 20 20 20 20 20  ?' OR a==8}     
7740: 20 20 20 20 20 20 7b 38 20 32 30 7d 0a 74 65 73        {8 20}.tes
7750: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 32  t_expr2 expr-7.2
7760: 36 20 7b 61 20 69 73 6e 75 6c 6c 20 4f 52 20 61  6 {a isnull OR a
7770: 3d 38 7d 20 20 20 20 20 20 20 20 20 20 20 20 20  =8}             
7780: 20 20 7b 7b 7d 20 38 7d 0a 74 65 73 74 5f 65 78    {{} 8}.test_ex
7790: 70 72 32 20 65 78 70 72 2d 37 2e 32 37 20 7b 61  pr2 expr-7.27 {a
77a0: 20 6e 6f 74 6e 75 6c 6c 20 4f 52 20 61 3d 38 7d   notnull OR a=8}
77b0: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
77c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 31 20               {1 
77d0: 32 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20  2 3 4 5 6 7 8 9 
77e0: 31 30 20 31 31 20 31 32 20 31 33 20 31 34 20 31  10 11 12 13 14 1
77f0: 35 20 31 36 20 31 37 20 31 38 20 31 39 20 32 30  5 16 17 18 19 20
7800: 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70  }.test_expr2 exp
7810: 72 2d 37 2e 32 38 20 7b 61 3c 30 20 4f 52 20 62  r-7.28 {a<0 OR b
7820: 3d 30 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65 78  =0} {{}}.test_ex
7830: 70 72 32 20 65 78 70 72 2d 37 2e 32 39 20 7b 62  pr2 expr-7.29 {b
7840: 3d 30 20 4f 52 20 61 3c 30 7d 20 7b 7b 7d 7d 0a  =0 OR a<0} {{}}.
7850: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
7860: 37 2e 33 30 20 7b 61 3c 30 20 41 4e 44 20 62 3d  7.30 {a<0 AND b=
7870: 30 7d 20 7b 7d 0a 74 65 73 74 5f 65 78 70 72 32  0} {}.test_expr2
7880: 20 65 78 70 72 2d 37 2e 33 31 20 7b 62 3d 30 20   expr-7.31 {b=0 
7890: 41 4e 44 20 61 3c 30 7d 20 7b 7d 0a 74 65 73 74  AND a<0} {}.test
78a0: 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 33 32  _expr2 expr-7.32
78b0: 20 7b 61 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20   {a IS NULL AND 
78c0: 28 61 3c 30 20 4f 52 20 62 3d 30 29 7d 20 7b 7b  (a<0 OR b=0)} {{
78d0: 7d 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  }}.test_expr2 ex
78e0: 70 72 2d 37 2e 33 33 20 7b 61 20 49 53 20 4e 55  pr-7.33 {a IS NU
78f0: 4c 4c 20 41 4e 44 20 28 62 3d 30 20 4f 52 20 61  LL AND (b=0 OR a
7900: 3c 30 29 7d 20 7b 7b 7d 7d 0a 74 65 73 74 5f 65  <0)} {{}}.test_e
7910: 78 70 72 32 20 65 78 70 72 2d 37 2e 33 34 20 7b  xpr2 expr-7.34 {
7920: 61 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 28 61  a IS NULL AND (a
7930: 3c 30 20 41 4e 44 20 62 3d 30 29 7d 20 7b 7d 0a  <0 AND b=0)} {}.
7940: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
7950: 37 2e 33 35 20 7b 61 20 49 53 20 4e 55 4c 4c 20  7.35 {a IS NULL 
7960: 41 4e 44 20 28 62 3d 30 20 41 4e 44 20 61 3c 30  AND (b=0 AND a<0
7970: 29 7d 20 7b 7d 0a 74 65 73 74 5f 65 78 70 72 32  )} {}.test_expr2
7980: 20 65 78 70 72 2d 37 2e 33 32 20 7b 28 61 3c 30   expr-7.32 {(a<0
7990: 20 4f 52 20 62 3d 30 29 20 41 4e 44 20 61 20 49   OR b=0) AND a I
79a0: 53 20 4e 55 4c 4c 7d 20 7b 7b 7d 7d 0a 74 65 73  S NULL} {{}}.tes
79b0: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 33  t_expr2 expr-7.3
79c0: 33 20 7b 28 62 3d 30 20 4f 52 20 61 3c 30 29 20  3 {(b=0 OR a<0) 
79d0: 41 4e 44 20 61 20 49 53 20 4e 55 4c 4c 7d 20 7b  AND a IS NULL} {
79e0: 7b 7d 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65  {}}.test_expr2 e
79f0: 78 70 72 2d 37 2e 33 34 20 7b 28 61 3c 30 20 41  xpr-7.34 {(a<0 A
7a00: 4e 44 20 62 3d 30 29 20 41 4e 44 20 61 20 49 53  ND b=0) AND a IS
7a10: 20 4e 55 4c 4c 7d 20 7b 7d 0a 74 65 73 74 5f 65   NULL} {}.test_e
7a20: 78 70 72 32 20 65 78 70 72 2d 37 2e 33 35 20 7b  xpr2 expr-7.35 {
7a30: 28 62 3d 30 20 41 4e 44 20 61 3c 30 29 20 41 4e  (b=0 AND a<0) AN
7a40: 44 20 61 20 49 53 20 4e 55 4c 4c 7d 20 7b 7d 0a  D a IS NULL} {}.
7a50: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
7a60: 37 2e 33 36 20 7b 61 3c 32 20 4f 52 20 28 61 3c  7.36 {a<2 OR (a<
7a70: 30 20 4f 52 20 62 3d 30 29 7d 20 7b 7b 7d 20 31  0 OR b=0)} {{} 1
7a80: 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70  }.test_expr2 exp
7a90: 72 2d 37 2e 33 37 20 7b 61 3c 32 20 4f 52 20 28  r-7.37 {a<2 OR (
7aa0: 62 3d 30 20 4f 52 20 61 3c 30 29 7d 20 7b 7b 7d  b=0 OR a<0)} {{}
7ab0: 20 31 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65   1}.test_expr2 e
7ac0: 78 70 72 2d 37 2e 33 38 20 7b 61 3c 32 20 4f 52  xpr-7.38 {a<2 OR
7ad0: 20 28 61 3c 30 20 41 4e 44 20 62 3d 30 29 7d 20   (a<0 AND b=0)} 
7ae0: 7b 31 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65  {1}.test_expr2 e
7af0: 78 70 72 2d 37 2e 33 39 20 7b 61 3c 32 20 4f 52  xpr-7.39 {a<2 OR
7b00: 20 28 62 3d 30 20 41 4e 44 20 61 3c 30 29 7d 20   (b=0 AND a<0)} 
7b10: 7b 31 7d 0a 69 66 63 61 70 61 62 6c 65 20 66 6c  {1}.ifcapable fl
7b20: 6f 61 74 69 6e 67 70 6f 69 6e 74 20 7b 0a 20 20  oatingpoint {.  
7b30: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
7b40: 37 2e 34 30 20 7b 28 28 61 3c 32 20 4f 52 20 61  7.40 {((a<2 OR a
7b50: 20 49 53 20 4e 55 4c 4c 29 20 41 4e 44 20 62 3c   IS NULL) AND b<
7b60: 33 29 20 4f 52 20 62 3e 31 65 31 30 7d 20 7b 7b  3) OR b>1e10} {{
7b70: 7d 20 31 7d 0a 7d 0a 74 65 73 74 5f 65 78 70 72  } 1}.}.test_expr
7b80: 32 20 65 78 70 72 2d 37 2e 34 31 20 7b 61 20 42  2 expr-7.41 {a B
7b90: 45 54 57 45 45 4e 20 2d 31 20 41 4e 44 20 31 7d  ETWEEN -1 AND 1}
7ba0: 20 7b 31 7d 0a 74 65 73 74 5f 65 78 70 72 32 20   {1}.test_expr2 
7bb0: 65 78 70 72 2d 37 2e 34 32 20 7b 61 20 4e 4f 54  expr-7.42 {a NOT
7bc0: 20 42 45 54 57 45 45 4e 20 32 20 41 4e 44 20 31   BETWEEN 2 AND 1
7bd0: 30 30 7d 20 7b 31 7d 0a 74 65 73 74 5f 65 78 70  00} {1}.test_exp
7be0: 72 32 20 65 78 70 72 2d 37 2e 34 33 20 7b 28 62  r2 expr-7.43 {(b
7bf0: 2b 31 32 33 34 29 7c 7c 27 74 68 69 73 20 69 73  +1234)||'this is
7c00: 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 69   a string that i
7c10: 73 20 61 74 20 6c 65 61 73 74 20 33 32 20 63 68  s at least 32 ch
7c20: 61 72 61 63 74 65 72 73 20 6c 6f 6e 67 27 20 42  aracters long' B
7c30: 45 54 57 45 45 4e 20 31 20 41 4e 44 20 32 7d 20  ETWEEN 1 AND 2} 
7c40: 7b 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  {}.test_expr2 ex
7c50: 70 72 2d 37 2e 34 34 20 7b 31 32 33 7c 7c 27 78  pr-7.44 {123||'x
7c60: 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70  abcdefghijklmnop
7c70: 71 72 73 74 75 76 77 79 78 7a 30 31 32 33 34 35  qrstuvwyxz012345
7c80: 36 37 38 39 30 27 7c 7c 61 20 42 45 54 57 45 45  67890'||a BETWEE
7c90: 4e 20 27 31 32 33 61 27 20 41 4e 44 20 27 31 32  N '123a' AND '12
7ca0: 33 62 27 7d 20 7b 7d 0a 74 65 73 74 5f 65 78 70  3b'} {}.test_exp
7cb0: 72 32 20 65 78 70 72 2d 37 2e 34 35 20 7b 28 28  r2 expr-7.45 {((
7cc0: 31 32 33 7c 7c 27 78 61 62 63 64 65 66 67 68 69  123||'xabcdefghi
7cd0: 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 79 78  jklmnopqrstuvwyx
7ce0: 7a 30 31 32 33 34 35 36 37 38 39 30 27 7c 7c 61  z01234567890'||a
7cf0: 29 20 42 45 54 57 45 45 4e 20 27 31 32 33 61 27  ) BETWEEN '123a'
7d00: 20 41 4e 44 20 27 31 32 33 62 27 29 3c 30 7d 20   AND '123b')<0} 
7d10: 7b 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  {}.test_expr2 ex
7d20: 70 72 2d 37 2e 34 36 20 7b 28 28 31 32 33 7c 7c  pr-7.46 {((123||
7d30: 27 78 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e  'xabcdefghijklmn
7d40: 6f 70 71 72 73 74 75 76 77 79 78 7a 30 31 32 33  opqrstuvwyxz0123
7d50: 34 35 36 37 38 39 30 27 7c 7c 61 29 20 42 45 54  4567890'||a) BET
7d60: 57 45 45 4e 20 27 31 32 33 61 27 20 41 4e 44 20  WEEN '123a' AND 
7d70: 27 31 32 33 7a 27 29 3e 30 7d 20 7b 31 20 32 20  '123z')>0} {1 2 
7d80: 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31 30  3 4 5 6 7 8 9 10
7d90: 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35 20   11 12 13 14 15 
7da0: 31 36 20 31 37 20 31 38 20 31 39 20 32 30 7d 0a  16 17 18 19 20}.
7db0: 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72  .test_expr2 expr
7dc0: 2d 37 2e 35 30 20 7b 28 28 61 20 62 65 74 77 65  -7.50 {((a betwe
7dd0: 65 6e 20 31 20 61 6e 64 20 32 20 4f 52 20 30 29  en 1 and 2 OR 0)
7de0: 20 41 4e 44 20 31 29 20 4f 52 20 30 7d 20 7b 31   AND 1) OR 0} {1
7df0: 20 32 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65   2}.test_expr2 e
7e00: 78 70 72 2d 37 2e 35 31 20 7b 28 28 61 20 6e 6f  xpr-7.51 {((a no
7e10: 74 20 62 65 74 77 65 65 6e 20 33 20 61 6e 64 20  t between 3 and 
7e20: 31 30 30 20 4f 52 20 30 29 20 41 4e 44 20 31 29  100 OR 0) AND 1)
7e30: 20 4f 52 20 30 7d 20 7b 31 20 32 7d 0a 0a 69 66   OR 0} {1 2}..if
7e40: 63 61 70 61 62 6c 65 20 73 75 62 71 75 65 72 79  capable subquery
7e50: 20 7b 0a 20 20 74 65 73 74 5f 65 78 70 72 32 20   {.  test_expr2 
7e60: 65 78 70 72 2d 37 2e 35 32 20 7b 28 28 61 20 69  expr-7.52 {((a i
7e70: 6e 20 28 31 2c 32 29 20 4f 52 20 30 29 20 41 4e  n (1,2) OR 0) AN
7e80: 44 20 31 29 20 4f 52 20 30 7d 20 7b 31 20 32 7d  D 1) OR 0} {1 2}
7e90: 0a 20 20 74 65 73 74 5f 65 78 70 72 32 20 65 78  .  test_expr2 ex
7ea0: 70 72 2d 37 2e 35 33 20 5c 0a 20 20 20 20 20 20  pr-7.53 \.      
7eb0: 7b 28 28 61 20 6e 6f 74 20 69 6e 20 28 33 2c 34  {((a not in (3,4
7ec0: 2c 35 2c 36 2c 37 2c 38 2c 39 2c 31 30 29 20 4f  ,5,6,7,8,9,10) O
7ed0: 52 20 30 29 20 41 4e 44 20 61 3c 31 31 29 20 4f  R 0) AND a<11) O
7ee0: 52 20 30 7d 20 7b 31 20 32 7d 0a 7d 0a 74 65 73  R 0} {1 2}.}.tes
7ef0: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 35  t_expr2 expr-7.5
7f00: 34 20 7b 28 28 61 3e 30 20 4f 52 20 30 29 20 41  4 {((a>0 OR 0) A
7f10: 4e 44 20 61 3c 33 29 20 4f 52 20 30 7d 20 7b 31  ND a<3) OR 0} {1
7f20: 20 32 7d 0a 69 66 63 61 70 61 62 6c 65 20 73 75   2}.ifcapable su
7f30: 62 71 75 65 72 79 20 7b 0a 20 20 74 65 73 74 5f  bquery {.  test_
7f40: 65 78 70 72 32 20 65 78 70 72 2d 37 2e 35 35 20  expr2 expr-7.55 
7f50: 7b 28 28 61 20 69 6e 20 28 31 2c 32 29 20 4f 52  {((a in (1,2) OR
7f60: 20 30 29 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20   0) IS NULL AND 
7f70: 31 29 20 4f 52 20 30 7d 20 7b 7b 7d 7d 0a 20 20  1) OR 0} {{}}.  
7f80: 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d  test_expr2 expr-
7f90: 37 2e 35 36 20 5c 0a 20 20 20 20 20 20 7b 28 28  7.56 \.      {((
7fa0: 61 20 6e 6f 74 20 69 6e 20 28 33 2c 34 2c 35 2c  a not in (3,4,5,
7fb0: 36 2c 37 2c 38 2c 39 2c 31 30 29 20 49 53 20 4e  6,7,8,9,10) IS N
7fc0: 55 4c 4c 20 4f 52 20 30 29 20 41 4e 44 20 31 29  ULL OR 0) AND 1)
7fd0: 20 4f 52 20 30 7d 20 7b 7b 7d 7d 0a 7d 0a 74 65   OR 0} {{}}.}.te
7fe0: 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e  st_expr2 expr-7.
7ff0: 35 37 20 7b 28 28 61 3e 30 20 49 53 20 4e 55 4c  57 {((a>0 IS NUL
8000: 4c 20 4f 52 20 30 29 20 41 4e 44 20 31 29 20 4f  L OR 0) AND 1) O
8010: 52 20 30 7d 20 7b 7b 7d 7d 0a 0a 74 65 73 74 5f  R 0} {{}}..test_
8020: 65 78 70 72 32 20 65 78 70 72 2d 37 2e 35 38 20  expr2 expr-7.58 
8030: 20 7b 28 61 7c 7c 27 27 29 3c 3d 27 31 27 7d 20   {(a||'')<='1'} 
8040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8050: 20 7b 31 7d 0a 0a 74 65 73 74 5f 65 78 70 72 32   {1}..test_expr2
8060: 20 65 78 70 72 2d 37 2e 35 39 20 7b 4c 49 4b 45   expr-7.59 {LIKE
8070: 28 27 31 30 25 27 2c 62 29 7d 20 20 20 20 20 20  ('10%',b)}      
8080: 20 20 20 20 20 20 20 20 20 20 20 20 7b 31 30 20              {10 
8090: 32 30 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65  20}.test_expr2 e
80a0: 78 70 72 2d 37 2e 36 30 20 7b 4c 49 4b 45 28 27  xpr-7.60 {LIKE('
80b0: 5f 34 27 2c 62 29 7d 20 20 20 20 20 20 20 20 20  _4',b)}         
80c0: 20 20 20 20 20 20 20 20 20 20 7b 36 7d 0a 74 65            {6}.te
80d0: 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e  st_expr2 expr-7.
80e0: 36 31 20 7b 47 4c 4f 42 28 27 31 3f 27 2c 61 29  61 {GLOB('1?',a)
80f0: 7d 20 20 20 20 20 20 20 20 20 20 20 20 7b 31 30  }            {10
8100: 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35 20   11 12 13 14 15 
8110: 31 36 20 31 37 20 31 38 20 31 39 7d 0a 74 65 73  16 17 18 19}.tes
8120: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 36  t_expr2 expr-7.6
8130: 32 20 7b 47 4c 4f 42 28 27 31 2a 34 27 2c 62 29  2 {GLOB('1*4',b)
8140: 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }               
8150: 20 20 20 7b 31 30 20 31 34 7d 0a 74 65 73 74 5f     {10 14}.test_
8160: 65 78 70 72 32 20 65 78 70 72 2d 37 2e 36 33 20  expr2 expr-7.63 
8170: 7b 47 4c 4f 42 28 27 2a 31 5b 34 35 36 5d 27 2c  {GLOB('*1[456]',
8180: 62 29 7d 20 20 20 20 20 20 20 20 20 20 20 20 20  b)}             
8190: 20 7b 34 7d 0a 74 65 73 74 5f 65 78 70 72 32 20   {4}.test_expr2 
81a0: 65 78 70 72 2d 37 2e 36 34 20 7b 62 20 3d 20 61  expr-7.64 {b = a
81b0: 62 73 28 2d 32 29 7d 20 20 20 20 20 20 20 20 20  bs(-2)}         
81c0: 20 20 20 20 20 20 20 20 20 20 20 7b 31 7d 0a 74             {1}.t
81d0: 65 73 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37  est_expr2 expr-7
81e0: 2e 36 35 20 7b 62 20 3d 20 61 62 73 28 2b 2d 32  .65 {b = abs(+-2
81f0: 29 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  )}              
8200: 20 20 20 20 20 7b 31 7d 0a 74 65 73 74 5f 65 78       {1}.test_ex
8210: 70 72 32 20 65 78 70 72 2d 37 2e 36 36 20 7b 62  pr2 expr-7.66 {b
8220: 20 3d 20 61 62 73 28 2b 2b 2d 32 29 7d 20 20 20   = abs(++-2)}   
8230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8240: 31 7d 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78  1}.test_expr2 ex
8250: 70 72 2d 37 2e 36 37 20 7b 62 20 3d 20 61 62 73  pr-7.67 {b = abs
8260: 28 2b 2d 2b 2d 32 29 7d 20 20 20 20 20 20 20 20  (+-+-2)}        
8270: 20 20 20 20 20 20 20 20 20 7b 31 7d 0a 74 65 73           {1}.tes
8280: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 36  t_expr2 expr-7.6
8290: 38 20 7b 62 20 3d 20 61 62 73 28 2b 2d 2b 2b 2d  8 {b = abs(+-++-
82a0: 32 29 7d 20 20 20 20 20 20 20 20 20 20 20 20 20  2)}             
82b0: 20 20 20 7b 31 7d 0a 74 65 73 74 5f 65 78 70 72     {1}.test_expr
82c0: 32 20 65 78 70 72 2d 37 2e 36 39 20 7b 62 20 3d  2 expr-7.69 {b =
82d0: 20 61 62 73 28 2b 2b 2b 2b 2d 32 29 7d 20 20 20   abs(++++-2)}   
82e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 31 7d               {1}
82f0: 0a 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72  .test_expr2 expr
8300: 2d 37 2e 37 30 20 7b 62 20 3d 20 35 20 2d 20 61  -7.70 {b = 5 - a
8310: 62 73 28 2b 33 29 7d 20 20 20 20 20 20 20 20 20  bs(+3)}         
8320: 20 20 20 20 20 20 20 7b 31 7d 0a 74 65 73 74 5f         {1}.test_
8330: 65 78 70 72 32 20 65 78 70 72 2d 37 2e 37 31 20  expr2 expr-7.71 
8340: 7b 62 20 3d 20 35 20 2d 20 61 62 73 28 2d 33 29  {b = 5 - abs(-3)
8350: 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }               
8360: 20 7b 31 7d 0a 69 66 63 61 70 61 62 6c 65 20 66   {1}.ifcapable f
8370: 6c 6f 61 74 69 6e 67 70 6f 69 6e 74 20 7b 0a 20  loatingpoint {. 
8380: 20 74 65 73 74 5f 65 78 70 72 32 20 65 78 70 72   test_expr2 expr
8390: 2d 37 2e 37 32 20 7b 62 20 3d 20 61 62 73 28 2d  -7.72 {b = abs(-
83a0: 32 2e 30 29 7d 20 20 20 20 20 20 20 20 20 20 20  2.0)}           
83b0: 20 20 20 20 20 20 20 7b 31 7d 0a 7d 0a 74 65 73         {1}.}.tes
83c0: 74 5f 65 78 70 72 32 20 65 78 70 72 2d 37 2e 37  t_expr2 expr-7.7
83d0: 33 20 7b 62 20 3d 20 36 20 2d 20 61 62 73 28 2d  3 {b = 6 - abs(-
83e0: 61 29 7d 20 20 20 20 20 20 20 20 20 20 20 20 20  a)}             
83f0: 20 20 20 7b 32 7d 0a 69 66 63 61 70 61 62 6c 65     {2}.ifcapable
8400: 20 66 6c 6f 61 74 69 6e 67 70 6f 69 6e 74 20 7b   floatingpoint {
8410: 0a 20 20 74 65 73 74 5f 65 78 70 72 32 20 65 78  .  test_expr2 ex
8420: 70 72 2d 37 2e 37 34 20 7b 62 20 3d 20 61 62 73  pr-7.74 {b = abs
8430: 28 38 2e 30 29 7d 20 20 20 20 20 20 20 20 20 20  (8.0)}          
8440: 20 20 20 20 20 20 20 20 20 7b 33 7d 0a 7d 0a 0a           {3}.}..
8450: 23 20 54 65 73 74 20 74 68 65 20 43 55 52 52 45  # Test the CURRE
8460: 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54  NT_TIME, CURRENT
8470: 5f 44 41 54 45 2c 20 61 6e 64 20 43 55 52 52 45  _DATE, and CURRE
8480: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 65 78 70  NT_TIMESTAMP exp
8490: 72 65 73 73 69 6f 6e 73 2e 0a 23 0a 69 66 63 61  ressions..#.ifca
84a0: 70 61 62 6c 65 20 7b 66 6c 6f 61 74 69 6e 67 70  pable {floatingp
84b0: 6f 69 6e 74 7d 20 7b 0a 20 20 73 65 74 20 73 71  oint} {.  set sq
84c0: 6c 69 74 65 5f 63 75 72 72 65 6e 74 5f 74 69 6d  lite_current_tim
84d0: 65 20 31 31 35 37 31 32 34 38 34 39 0a 20 20 64  e 1157124849.  d
84e0: 6f 5f 74 65 73 74 20 65 78 70 72 2d 38 2e 31 20  o_test expr-8.1 
84f0: 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53  {.    execsql {S
8500: 45 4c 45 43 54 20 43 55 52 52 45 4e 54 5f 54 49  ELECT CURRENT_TI
8510: 4d 45 7d 0a 20 20 7d 20 7b 31 35 3a 33 34 3a 30  ME}.  } {15:34:0
8520: 39 7d 0a 20 20 64 6f 5f 74 65 73 74 20 65 78 70  9}.  do_test exp
8530: 72 2d 38 2e 32 20 7b 0a 20 20 20 20 65 78 65 63  r-8.2 {.    exec
8540: 73 71 6c 20 7b 53 45 4c 45 43 54 20 43 55 52 52  sql {SELECT CURR
8550: 45 4e 54 5f 44 41 54 45 7d 0a 20 20 7d 20 7b 32  ENT_DATE}.  } {2
8560: 30 30 36 2d 30 39 2d 30 31 7d 0a 20 20 64 6f 5f  006-09-01}.  do_
8570: 74 65 73 74 20 65 78 70 72 2d 38 2e 33 20 7b 0a  test expr-8.3 {.
8580: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c      execsql {SEL
8590: 45 43 54 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  ECT CURRENT_TIME
85a0: 53 54 41 4d 50 7d 0a 20 20 7d 20 7b 7b 32 30 30  STAMP}.  } {{200
85b0: 36 2d 30 39 2d 30 31 20 31 35 3a 33 34 3a 30 39  6-09-01 15:34:09
85c0: 7d 7d 0a 7d 0a 69 66 63 61 70 61 62 6c 65 20 64  }}.}.ifcapable d
85d0: 61 74 65 74 69 6d 65 20 7b 0a 20 20 64 6f 5f 74  atetime {.  do_t
85e0: 65 73 74 20 65 78 70 72 2d 38 2e 34 20 7b 0a 20  est expr-8.4 {. 
85f0: 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45     execsql {SELE
8600: 43 54 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 3d  CT CURRENT_TIME=
8610: 3d 74 69 6d 65 28 27 6e 6f 77 27 29 3b 7d 0a 20  =time('now');}. 
8620: 20 7d 20 31 0a 20 20 64 6f 5f 74 65 73 74 20 65   } 1.  do_test e
8630: 78 70 72 2d 38 2e 35 20 7b 0a 20 20 20 20 65 78  xpr-8.5 {.    ex
8640: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 43 55  ecsql {SELECT CU
8650: 52 52 45 4e 54 5f 44 41 54 45 3d 3d 64 61 74 65  RRENT_DATE==date
8660: 28 27 6e 6f 77 27 29 3b 7d 0a 20 20 7d 20 31 0a  ('now');}.  } 1.
8670: 20 20 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 38    do_test expr-8
8680: 2e 36 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .6 {.    execsql
8690: 20 7b 53 45 4c 45 43 54 20 43 55 52 52 45 4e 54   {SELECT CURRENT
86a0: 5f 54 49 4d 45 53 54 41 4d 50 3d 3d 64 61 74 65  _TIMESTAMP==date
86b0: 74 69 6d 65 28 27 6e 6f 77 27 29 3b 7d 0a 20 20  time('now');}.  
86c0: 7d 20 31 0a 7d 0a 73 65 74 20 73 71 6c 69 74 65  } 1.}.set sqlite
86d0: 5f 63 75 72 72 65 6e 74 5f 74 69 6d 65 20 30 0a  _current_time 0.
86e0: 0a 69 66 63 61 70 61 62 6c 65 20 66 6c 6f 61 74  .ifcapable float
86f0: 69 6e 67 70 6f 69 6e 74 20 7b 0a 20 20 64 6f 5f  ingpoint {.  do_
8700: 74 65 73 74 20 65 78 70 72 2d 39 2e 31 20 7b 0a  test expr-9.1 {.
8710: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c      execsql {SEL
8720: 45 43 54 20 72 6f 75 6e 64 28 2d 28 27 2d 27 7c  ECT round(-('-'|
8730: 7c 27 31 32 33 27 29 29 7d 0a 20 20 7d 20 31 32  |'123'))}.  } 12
8740: 33 2e 30 0a 7d 0a 0a 23 20 54 65 73 74 20 61 6e  3.0.}..# Test an
8750: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 74   error message t
8760: 68 61 74 20 63 61 6e 20 62 65 20 67 65 6e 65 72  hat can be gener
8770: 61 74 65 64 20 62 79 20 74 68 65 20 4c 49 4b 45  ated by the LIKE
8780: 20 65 78 70 72 65 73 73 69 6f 6e 0a 64 6f 5f 74   expression.do_t
8790: 65 73 74 20 65 78 70 72 2d 31 30 2e 31 20 7b 0a  est expr-10.1 {.
87a0: 20 20 63 61 74 63 68 73 71 6c 20 7b 53 45 4c 45    catchsql {SELE
87b0: 43 54 20 27 61 62 63 27 20 4c 49 4b 45 20 27 61  CT 'abc' LIKE 'a
87c0: 62 63 27 20 45 53 43 41 50 45 20 27 27 7d 0a 7d  bc' ESCAPE ''}.}
87d0: 20 7b 31 20 7b 45 53 43 41 50 45 20 65 78 70 72   {1 {ESCAPE expr
87e0: 65 73 73 69 6f 6e 20 6d 75 73 74 20 62 65 20 61  ession must be a
87f0: 20 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65   single characte
8800: 72 7d 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70 72  r}}.do_test expr
8810: 2d 31 30 2e 32 20 7b 0a 20 20 63 61 74 63 68 73  -10.2 {.  catchs
8820: 71 6c 20 7b 53 45 4c 45 43 54 20 27 61 62 63 27  ql {SELECT 'abc'
8830: 20 4c 49 4b 45 20 27 61 62 63 27 20 45 53 43 41   LIKE 'abc' ESCA
8840: 50 45 20 27 61 62 27 7d 0a 7d 20 7b 31 20 7b 45  PE 'ab'}.} {1 {E
8850: 53 43 41 50 45 20 65 78 70 72 65 73 73 69 6f 6e  SCAPE expression
8860: 20 6d 75 73 74 20 62 65 20 61 20 73 69 6e 67 6c   must be a singl
8870: 65 20 63 68 61 72 61 63 74 65 72 7d 7d 0a 0a 23  e character}}..#
8880: 20 49 66 20 77 65 20 73 70 65 63 69 66 79 20 61   If we specify a
8890: 6e 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61  n integer consta
88a0: 6e 74 20 74 68 61 74 20 69 73 20 62 69 67 67 65  nt that is bigge
88b0: 72 20 74 68 61 6e 20 74 68 65 20 6c 61 72 67 65  r than the large
88c0: 73 74 0a 23 20 70 6f 73 73 69 62 6c 65 20 69 6e  st.# possible in
88d0: 74 65 67 65 72 2c 20 63 6f 64 65 20 74 68 65 20  teger, code the 
88e0: 69 6e 74 65 67 65 72 20 61 73 20 61 20 72 65 61  integer as a rea
88f0: 6c 20 6e 75 6d 62 65 72 2e 0a 23 0a 64 6f 5f 74  l number..#.do_t
8900: 65 73 74 20 65 78 70 72 2d 31 31 2e 31 20 7b 0a  est expr-11.1 {.
8910: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
8920: 54 20 74 79 70 65 6f 66 28 39 32 32 33 33 37 32  T typeof(9223372
8930: 30 33 36 38 35 34 37 37 35 38 30 37 29 7d 0a 7d  036854775807)}.}
8940: 20 7b 69 6e 74 65 67 65 72 7d 0a 64 6f 5f 74 65   {integer}.do_te
8950: 73 74 20 65 78 70 72 2d 31 31 2e 32 20 7b 0a 20  st expr-11.2 {. 
8960: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
8970: 20 74 79 70 65 6f 66 28 30 30 30 30 30 30 30 39   typeof(00000009
8980: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
8990: 30 37 29 7d 0a 7d 20 7b 69 6e 74 65 67 65 72 7d  07)}.} {integer}
89a0: 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31 31  .do_test expr-11
89b0: 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .3 {.  execsql {
89c0: 53 45 4c 45 43 54 20 74 79 70 65 6f 66 28 2b 39  SELECT typeof(+9
89d0: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
89e0: 30 37 29 7d 0a 7d 20 7b 69 6e 74 65 67 65 72 7d  07)}.} {integer}
89f0: 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31 31  .do_test expr-11
8a00: 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .4 {.  execsql {
8a10: 53 45 4c 45 43 54 20 74 79 70 65 6f 66 28 2b 30  SELECT typeof(+0
8a20: 30 30 30 30 30 30 30 39 32 32 33 33 37 32 30 33  0000000922337203
8a30: 36 38 35 34 37 37 35 38 30 37 29 7d 0a 7d 20 7b  6854775807)}.} {
8a40: 69 6e 74 65 67 65 72 7d 0a 64 6f 5f 74 65 73 74  integer}.do_test
8a50: 20 65 78 70 72 2d 31 31 2e 35 20 7b 0a 20 20 65   expr-11.5 {.  e
8a60: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 74  xecsql {SELECT t
8a70: 79 70 65 6f 66 28 39 32 32 33 33 37 32 30 33 36  ypeof(9223372036
8a80: 38 35 34 37 37 35 38 30 38 29 7d 0a 7d 20 7b 72  854775808)}.} {r
8a90: 65 61 6c 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70  eal}.do_test exp
8aa0: 72 2d 31 31 2e 36 20 7b 0a 20 20 65 78 65 63 73  r-11.6 {.  execs
8ab0: 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65 6f  ql {SELECT typeo
8ac0: 66 28 30 30 30 30 30 30 30 39 32 32 33 33 37 32  f(00000009223372
8ad0: 30 33 36 38 35 34 37 37 35 38 30 38 29 7d 0a 7d  036854775808)}.}
8ae0: 20 7b 72 65 61 6c 7d 0a 64 6f 5f 74 65 73 74 20   {real}.do_test 
8af0: 65 78 70 72 2d 31 31 2e 37 20 7b 0a 20 20 65 78  expr-11.7 {.  ex
8b00: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 74 79  ecsql {SELECT ty
8b10: 70 65 6f 66 28 2b 39 32 32 33 33 37 32 30 33 36  peof(+9223372036
8b20: 38 35 34 37 37 35 38 30 38 29 7d 0a 7d 20 7b 72  854775808)}.} {r
8b30: 65 61 6c 7d 0a 64 6f 5f 74 65 73 74 20 65 78 70  eal}.do_test exp
8b40: 72 2d 31 31 2e 38 20 7b 0a 20 20 65 78 65 63 73  r-11.8 {.  execs
8b50: 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65 6f  ql {SELECT typeo
8b60: 66 28 2b 30 30 30 30 30 30 39 32 32 33 33 37 32  f(+0000009223372
8b70: 30 33 36 38 35 34 37 37 35 38 30 38 29 7d 0a 7d  036854775808)}.}
8b80: 20 7b 72 65 61 6c 7d 0a 64 6f 5f 74 65 73 74 20   {real}.do_test 
8b90: 65 78 70 72 2d 31 31 2e 31 31 20 7b 0a 20 20 65  expr-11.11 {.  e
8ba0: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 74  xecsql {SELECT t
8bb0: 79 70 65 6f 66 28 2d 39 32 32 33 33 37 32 30 33  ypeof(-922337203
8bc0: 36 38 35 34 37 37 35 38 30 38 29 7d 0a 7d 20 7b  6854775808)}.} {
8bd0: 69 6e 74 65 67 65 72 7d 0a 64 6f 5f 74 65 73 74  integer}.do_test
8be0: 20 65 78 70 72 2d 31 31 2e 31 32 20 7b 0a 20 20   expr-11.12 {.  
8bf0: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
8c00: 74 79 70 65 6f 66 28 2d 30 30 30 30 30 30 30 39  typeof(-00000009
8c10: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
8c20: 30 38 29 7d 0a 7d 20 7b 69 6e 74 65 67 65 72 7d  08)}.} {integer}
8c30: 0a 69 66 63 61 70 61 62 6c 65 20 66 6c 6f 61 74  .ifcapable float
8c40: 69 6e 67 70 6f 69 6e 74 20 7b 0a 20 20 64 6f 5f  ingpoint {.  do_
8c50: 74 65 73 74 20 65 78 70 72 2d 31 31 2e 31 33 20  test expr-11.13 
8c60: 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53  {.    execsql {S
8c70: 45 4c 45 43 54 20 74 79 70 65 6f 66 28 2d 39 32  ELECT typeof(-92
8c80: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
8c90: 39 29 7d 0a 20 20 7d 20 7b 72 65 61 6c 7d 0a 20  9)}.  } {real}. 
8ca0: 20 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31 31   do_test expr-11
8cb0: 2e 31 34 20 7b 0a 20 20 20 20 65 78 65 63 73 71  .14 {.    execsq
8cc0: 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65 6f 66  l {SELECT typeof
8cd0: 28 2d 30 30 30 30 30 30 30 39 32 32 33 33 37 32  (-00000009223372
8ce0: 30 33 36 38 35 34 37 37 35 38 30 39 29 7d 0a 20  036854775809)}. 
8cf0: 20 7d 20 7b 72 65 61 6c 7d 0a 7d 0a 0a 23 20 54   } {real}.}..# T
8d00: 68 65 73 65 20 74 77 6f 20 73 74 61 74 65 6d 65  hese two stateme
8d10: 6e 74 73 20 75 73 65 64 20 74 6f 20 6c 65 61 6b  nts used to leak
8d20: 20 6d 65 6d 6f 72 79 20 28 62 65 63 61 75 73 65   memory (because
8d30: 20 6f 66 20 6d 69 73 73 69 6e 67 20 25 64 65 73   of missing %des
8d40: 74 72 75 63 74 6f 72 0a 23 20 64 69 72 65 63 74  tructor.# direct
8d50: 69 76 65 73 20 69 6e 20 70 61 72 73 65 2e 79 29  ives in parse.y)
8d60: 2e 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31  ..do_test expr-1
8d70: 32 2e 31 20 7b 0a 20 20 63 61 74 63 68 73 71 6c  2.1 {.  catchsql
8d80: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 28 43   {.    SELECT (C
8d90: 41 53 45 20 61 3e 34 20 54 48 45 4e 20 31 20 45  ASE a>4 THEN 1 E
8da0: 4c 53 45 20 30 20 45 4e 44 29 20 46 52 4f 4d 20  LSE 0 END) FROM 
8db0: 74 65 73 74 31 3b 0a 20 20 7d 0a 7d 20 7b 31 20  test1;.  }.} {1 
8dc0: 7b 6e 65 61 72 20 22 54 48 45 4e 22 3a 20 73 79  {near "THEN": sy
8dd0: 6e 74 61 78 20 65 72 72 6f 72 7d 7d 0a 64 6f 5f  ntax error}}.do_
8de0: 74 65 73 74 20 65 78 70 72 2d 31 32 2e 32 20 7b  test expr-12.2 {
8df0: 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20  .  catchsql {.  
8e00: 20 20 53 45 4c 45 43 54 20 28 43 41 53 45 20 57    SELECT (CASE W
8e10: 48 45 4e 20 61 3e 34 20 54 48 45 4e 20 31 20 45  HEN a>4 THEN 1 E
8e20: 4c 53 45 20 30 29 20 46 52 4f 4d 20 74 65 73 74  LSE 0) FROM test
8e30: 31 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 6e 65 61  1;.  }.} {1 {nea
8e40: 72 20 22 29 22 3a 20 73 79 6e 74 61 78 20 65 72  r ")": syntax er
8e50: 72 6f 72 7d 7d 0a 0a 69 66 63 61 70 61 62 6c 65  ror}}..ifcapable
8e60: 20 66 6c 6f 61 74 69 6e 67 70 6f 69 6e 74 20 7b   floatingpoint {
8e70: 0a 20 20 64 6f 5f 74 65 73 74 20 65 78 70 72 2d  .  do_test expr-
8e80: 31 33 2e 31 20 7b 0a 20 20 20 20 65 78 65 63 73  13.1 {.    execs
8e90: 71 6c 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43  ql {.      SELEC
8ea0: 54 20 31 32 33 34 35 36 37 38 39 30 31 32 33 34  T 12345678901234
8eb0: 35 36 37 38 39 30 3b 0a 20 20 20 20 7d 0a 20 20  567890;.    }.  
8ec0: 7d 20 7b 31 2e 32 33 34 35 36 37 38 39 30 31 32  } {1.23456789012
8ed0: 33 34 36 65 2b 31 39 7d 0a 7d 0a 0a 23 20 49 6d  346e+19}.}..# Im
8ee0: 70 6c 69 63 69 74 20 53 74 72 69 6e 67 2d 3e 49  plicit String->I
8ef0: 6e 74 65 67 65 72 20 63 6f 6e 76 65 72 73 69 6f  nteger conversio
8f00: 6e 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 70  n is used when p
8f10: 6f 73 73 69 62 6c 65 2e 0a 23 0a 69 66 20 7b 5b  ossible..#.if {[
8f20: 77 6f 72 6b 69 6e 67 5f 36 34 62 69 74 5f 69 6e  working_64bit_in
8f30: 74 5d 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20  t]} {.  do_test 
8f40: 65 78 70 72 2d 31 33 2e 32 20 7b 0a 20 20 20 20  expr-13.2 {.    
8f50: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
8f60: 53 45 4c 45 43 54 20 30 2b 27 39 32 32 33 33 37  SELECT 0+'922337
8f70: 32 30 33 36 38 35 34 37 37 35 38 30 37 27 0a 20  2036854775807'. 
8f80: 20 20 20 7d 0a 20 20 7d 20 7b 39 32 32 33 33 37     }.  } {922337
8f90: 32 30 33 36 38 35 34 37 37 35 38 30 37 7d 0a 20  2036854775807}. 
8fa0: 20 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31 33   do_test expr-13
8fb0: 2e 33 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .3 {.    execsql
8fc0: 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20   {.      SELECT 
8fd0: 27 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  '922337203685477
8fe0: 35 38 30 37 27 2b 30 0a 20 20 20 20 7d 0a 20 20  5807'+0.    }.  
8ff0: 7d 20 7b 39 32 32 33 33 37 32 30 33 36 38 35 34  } {9223372036854
9000: 37 37 35 38 30 37 7d 0a 7d 0a 0a 23 20 49 66 20  775807}.}..# If 
9010: 74 68 65 20 76 61 6c 75 65 20 69 73 20 74 6f 6f  the value is too
9020: 20 6c 61 72 67 65 2c 20 75 73 65 20 53 74 72 69   large, use Stri
9030: 6e 67 2d 3e 46 6c 6f 61 74 20 63 6f 6e 76 65 72  ng->Float conver
9040: 73 69 6f 6e 2e 0a 23 0a 69 66 63 61 70 61 62 6c  sion..#.ifcapabl
9050: 65 20 66 6c 6f 61 74 69 6e 67 70 6f 69 6e 74 20  e floatingpoint 
9060: 7b 0a 20 20 64 6f 5f 74 65 73 74 20 65 78 70 72  {.  do_test expr
9070: 2d 31 33 2e 34 20 7b 0a 20 20 20 20 65 78 65 63  -13.4 {.    exec
9080: 73 71 6c 20 7b 0a 20 20 20 20 20 20 53 45 4c 45  sql {.      SELE
9090: 43 54 20 30 2b 27 39 32 32 33 33 37 32 30 33 36  CT 0+'9223372036
90a0: 38 35 34 37 37 35 38 30 38 27 0a 20 20 20 20 7d  854775808'.    }
90b0: 0a 20 20 7d 20 7b 39 2e 32 32 33 33 37 32 30 33  .  } {9.22337203
90c0: 36 38 35 34 37 38 65 2b 31 38 7d 0a 20 20 64 6f  685478e+18}.  do
90d0: 5f 74 65 73 74 20 65 78 70 72 2d 31 33 2e 35 20  _test expr-13.5 
90e0: 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a  {.    execsql {.
90f0: 20 20 20 20 20 20 53 45 4c 45 43 54 20 27 39 32        SELECT '92
9100: 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
9110: 38 27 2b 30 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  8'+0.    }.  } {
9120: 39 2e 32 32 33 33 37 32 30 33 36 38 35 34 37 38  9.22337203685478
9130: 65 2b 31 38 7d 0a 7d 0a 0a 23 20 55 73 65 20 53  e+18}.}..# Use S
9140: 74 72 69 6e 67 2d 3e 66 6c 6f 61 74 20 63 6f 6e  tring->float con
9150: 76 65 72 73 69 6f 6e 20 69 66 20 74 68 65 20 76  version if the v
9160: 61 6c 75 65 20 69 73 20 65 78 70 6c 69 63 69 74  alue is explicit
9170: 6c 79 20 61 20 66 6c 6f 61 74 69 6e 67 0a 23 20  ly a floating.# 
9180: 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 23 0a 64  point value..#.d
9190: 6f 5f 74 65 73 74 20 65 78 70 72 2d 31 33 2e 36  o_test expr-13.6
91a0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
91b0: 20 20 20 53 45 4c 45 43 54 20 30 2b 27 39 32 32     SELECT 0+'922
91c0: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
91d0: 2e 30 27 0a 20 20 7d 0a 7d 20 7b 39 2e 32 32 33  .0'.  }.} {9.223
91e0: 33 37 32 30 33 36 38 35 34 37 38 65 2b 31 38 7d  37203685478e+18}
91f0: 0a 64 6f 5f 74 65 73 74 20 65 78 70 72 2d 31 33  .do_test expr-13
9200: 2e 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .7 {.  execsql {
9210: 0a 20 20 20 20 53 45 4c 45 43 54 20 27 39 32 32  .    SELECT '922
9220: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
9230: 2e 30 27 2b 30 0a 20 20 7d 0a 7d 20 7b 39 2e 32  .0'+0.  }.} {9.2
9240: 32 33 33 37 32 30 33 36 38 35 34 37 38 65 2b 31  2337203685478e+1
9250: 38 7d 0a 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74  8}...finish_test
9260: 0a                                               .