/ Hex Artifact Content
Login

Artifact 24f19ad14bb1b831564ced5273e681e495662848:


0000: 23 20 32 30 30 38 20 44 65 63 65 6d 62 65 72 20  # 2008 December 
0010: 33 30 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f  30.#.# The autho
0020: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
0030: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
0040: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
0050: 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61  lace of.# a lega
0060: 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69  l notice, here i
0070: 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a  s a blessing:.#.
0080: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20  #    May you do 
0090: 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69  good and not evi
00a0: 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  l..#    May you 
00b0: 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73  find forgiveness
00c0: 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e   for yourself an
00d0: 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73  d forgive others
00e0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73  ..#    May you s
00f0: 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76  hare freely, nev
0100: 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74  er taking more t
0110: 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a  han you give..#.
0120: 23 2a 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 0a 23 20 54 68 69 73 20  ********.# This 
0170: 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20  file implements 
0180: 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73  regression tests
0190: 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72   for SQLite libr
01a0: 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75  ary.  The.# focu
01b0: 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20 69  s of this file i
01c0: 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 6d 75  s testing the mu
01d0: 6c 74 69 2d 69 6e 64 65 78 20 4f 52 20 63 6c 61  lti-index OR cla
01e0: 75 73 65 20 6f 70 74 69 6d 69 7a 65 72 2e 0a 23  use optimizer..#
01f0: 0a 23 20 24 49 64 3a 20 77 68 65 72 65 39 2e 74  .# $Id: where9.t
0200: 65 73 74 2c 76 20 31 2e 39 20 32 30 30 39 2f 30  est,v 1.9 2009/0
0210: 36 2f 30 35 20 31 37 3a 30 39 3a 31 32 20 64 72  6/05 17:09:12 dr
0220: 68 20 45 78 70 20 24 0a 0a 73 65 74 20 74 65 73  h Exp $..set tes
0230: 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61  tdir [file dirna
0240: 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63  me $argv0].sourc
0250: 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74 65  e $testdir/teste
0260: 72 2e 74 63 6c 0a 0a 69 66 63 61 70 61 62 6c 65  r.tcl..ifcapable
0270: 20 21 6f 72 5f 6f 70 74 20 7b 0a 20 20 66 69 6e   !or_opt {.  fin
0280: 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74 75 72  ish_test.  retur
0290: 6e 0a 7d 0a 0a 23 20 45 76 61 6c 75 61 74 65 20  n.}..# Evaluate 
02a0: 53 51 4c 2e 20 20 52 65 74 75 72 6e 20 74 68 65  SQL.  Return the
02b0: 20 72 65 73 75 6c 74 20 73 65 74 20 66 6f 6c 6c   result set foll
02c0: 6f 77 65 64 20 62 79 20 74 68 65 0a 23 20 61 6e  owed by the.# an
02d0: 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  d the number of 
02e0: 66 75 6c 6c 2d 73 63 61 6e 20 73 74 65 70 73 2e  full-scan steps.
02f0: 0a 23 0a 70 72 6f 63 20 63 6f 75 6e 74 5f 73 74  .#.proc count_st
0300: 65 70 73 20 7b 73 71 6c 7d 20 7b 0a 20 20 73 65  eps {sql} {.  se
0310: 74 20 72 20 5b 64 62 20 65 76 61 6c 20 24 73 71  t r [db eval $sq
0320: 6c 5d 0a 20 20 6c 61 70 70 65 6e 64 20 72 20 73  l].  lappend r s
0330: 63 61 6e 20 5b 64 62 20 73 74 61 74 75 73 20 73  can [db status s
0340: 74 65 70 5d 20 73 6f 72 74 20 5b 64 62 20 73 74  tep] sort [db st
0350: 61 74 75 73 20 73 6f 72 74 5d 0a 7d 0a 0a 0a 23  atus sort].}...#
0360: 20 43 6f 6e 73 74 72 75 63 74 20 74 65 73 74 20   Construct test 
0370: 64 61 74 61 2e 20 20 0a 23 20 0a 64 6f 5f 74 65  data.  .# .do_te
0380: 73 74 20 77 68 65 72 65 39 2d 31 2e 31 20 7b 0a  st where9-1.1 {.
0390: 20 20 64 62 20 65 76 61 6c 20 7b 0a 20 20 20 20    db eval {.    
03a0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28  CREATE TABLE t1(
03b0: 61 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  a INTEGER PRIMAR
03c0: 59 20 4b 45 59 2c 62 2c 63 2c 64 2c 65 2c 66 2c  Y KEY,b,c,d,e,f,
03d0: 67 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  g);.    INSERT I
03e0: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 31 2c  NTO t1 VALUES(1,
03f0: 31 31 2c 31 30 30 31 2c 31 2e 30 30 31 2c 31 30  11,1001,1.001,10
0400: 30 2e 31 2c 27 62 63 64 65 66 67 68 69 6a 27 2c  0.1,'bcdefghij',
0410: 27 79 78 77 76 75 74 73 27 29 3b 0a 20 20 20 20  'yxwvuts');.    
0420: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0430: 41 4c 55 45 53 28 32 2c 32 32 2c 31 30 30 31 2c  ALUES(2,22,1001,
0440: 32 2e 30 30 32 2c 31 30 30 2e 31 2c 27 63 64 65  2.002,100.1,'cde
0450: 66 67 68 69 6a 6b 27 2c 27 79 78 77 76 75 74 73  fghijk','yxwvuts
0460: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
0470: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 33 2c  NTO t1 VALUES(3,
0480: 33 33 2c 31 30 30 31 2c 33 2e 30 30 33 2c 31 30  33,1001,3.003,10
0490: 30 2e 31 2c 27 64 65 66 67 68 69 6a 6b 6c 27 2c  0.1,'defghijkl',
04a0: 27 78 77 76 75 74 73 72 27 29 3b 0a 20 20 20 20  'xwvutsr');.    
04b0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
04c0: 41 4c 55 45 53 28 34 2c 34 34 2c 32 30 30 32 2c  ALUES(4,44,2002,
04d0: 34 2e 30 30 34 2c 32 30 30 2e 32 2c 27 65 66 67  4.004,200.2,'efg
04e0: 68 69 6a 6b 6c 6d 27 2c 27 78 77 76 75 74 73 72  hijklm','xwvutsr
04f0: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
0500: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 35 2c  NTO t1 VALUES(5,
0510: 35 35 2c 32 30 30 32 2c 35 2e 30 30 35 2c 32 30  55,2002,5.005,20
0520: 30 2e 32 2c 27 66 67 68 69 6a 6b 6c 6d 6e 27 2c  0.2,'fghijklmn',
0530: 27 78 77 76 75 74 73 72 27 29 3b 0a 20 20 20 20  'xwvutsr');.    
0540: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0550: 41 4c 55 45 53 28 36 2c 36 36 2c 32 30 30 32 2c  ALUES(6,66,2002,
0560: 36 2e 30 30 36 2c 32 30 30 2e 32 2c 27 67 68 69  6.006,200.2,'ghi
0570: 6a 6b 6c 6d 6e 6f 27 2c 27 78 77 76 75 74 73 72  jklmno','xwvutsr
0580: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
0590: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 37 2c  NTO t1 VALUES(7,
05a0: 37 37 2c 33 30 30 33 2c 37 2e 30 30 37 2c 33 30  77,3003,7.007,30
05b0: 30 2e 33 2c 27 68 69 6a 6b 6c 6d 6e 6f 70 27 2c  0.3,'hijklmnop',
05c0: 27 78 77 76 75 74 73 72 27 29 3b 0a 20 20 20 20  'xwvutsr');.    
05d0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
05e0: 41 4c 55 45 53 28 38 2c 38 38 2c 33 30 30 33 2c  ALUES(8,88,3003,
05f0: 38 2e 30 30 38 2c 33 30 30 2e 33 2c 27 69 6a 6b  8.008,300.3,'ijk
0600: 6c 6d 6e 6f 70 71 27 2c 27 77 76 75 74 73 72 71  lmnopq','wvutsrq
0610: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
0620: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 39 2c  NTO t1 VALUES(9,
0630: 39 39 2c 33 30 30 33 2c 39 2e 30 30 39 2c 33 30  99,3003,9.009,30
0640: 30 2e 33 2c 27 6a 6b 6c 6d 6e 6f 70 71 72 27 2c  0.3,'jklmnopqr',
0650: 27 77 76 75 74 73 72 71 27 29 3b 0a 20 20 20 20  'wvutsrq');.    
0660: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0670: 41 4c 55 45 53 28 31 30 2c 31 31 30 2c 34 30 30  ALUES(10,110,400
0680: 34 2c 31 30 2e 30 31 2c 34 30 30 2e 34 2c 27 6b  4,10.01,400.4,'k
0690: 6c 6d 6e 6f 70 71 72 73 27 2c 27 77 76 75 74 73  lmnopqrs','wvuts
06a0: 72 71 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  rq');.    INSERT
06b0: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
06c0: 31 31 2c 31 32 31 2c 34 30 30 34 2c 31 31 2e 30  11,121,4004,11.0
06d0: 31 31 2c 34 30 30 2e 34 2c 27 6c 6d 6e 6f 70 71  11,400.4,'lmnopq
06e0: 72 73 74 27 2c 27 77 76 75 74 73 72 71 27 29 3b  rst','wvutsrq');
06f0: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0700: 20 74 31 20 56 41 4c 55 45 53 28 31 32 2c 31 33   t1 VALUES(12,13
0710: 32 2c 34 30 30 34 2c 31 32 2e 30 31 32 2c 34 30  2,4004,12.012,40
0720: 30 2e 34 2c 27 6d 6e 6f 70 71 72 73 74 75 27 2c  0.4,'mnopqrstu',
0730: 27 77 76 75 74 73 72 71 27 29 3b 0a 20 20 20 20  'wvutsrq');.    
0740: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0750: 41 4c 55 45 53 28 31 33 2c 31 34 33 2c 35 30 30  ALUES(13,143,500
0760: 35 2c 31 33 2e 30 31 33 2c 35 30 30 2e 35 2c 27  5,13.013,500.5,'
0770: 6e 6f 70 71 72 73 74 75 76 27 2c 27 76 75 74 73  nopqrstuv','vuts
0780: 72 71 70 27 29 3b 0a 20 20 20 20 49 4e 53 45 52  rqp');.    INSER
0790: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
07a0: 28 31 34 2c 31 35 34 2c 35 30 30 35 2c 31 34 2e  (14,154,5005,14.
07b0: 30 31 34 2c 35 30 30 2e 35 2c 27 6f 70 71 72 73  014,500.5,'opqrs
07c0: 74 75 76 77 27 2c 27 76 75 74 73 72 71 70 27 29  tuvw','vutsrqp')
07d0: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
07e0: 4f 20 74 31 20 56 41 4c 55 45 53 28 31 35 2c 31  O t1 VALUES(15,1
07f0: 36 35 2c 35 30 30 35 2c 31 35 2e 30 31 35 2c 35  65,5005,15.015,5
0800: 30 30 2e 35 2c 27 70 71 72 73 74 75 76 77 78 27  00.5,'pqrstuvwx'
0810: 2c 27 76 75 74 73 72 71 70 27 29 3b 0a 20 20 20  ,'vutsrqp');.   
0820: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
0830: 56 41 4c 55 45 53 28 31 36 2c 31 37 36 2c 36 30  VALUES(16,176,60
0840: 30 36 2c 31 36 2e 30 31 36 2c 36 30 30 2e 36 2c  06,16.016,600.6,
0850: 27 71 72 73 74 75 76 77 78 79 27 2c 27 76 75 74  'qrstuvwxy','vut
0860: 73 72 71 70 27 29 3b 0a 20 20 20 20 49 4e 53 45  srqp');.    INSE
0870: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0880: 53 28 31 37 2c 31 38 37 2c 36 30 30 36 2c 31 37  S(17,187,6006,17
0890: 2e 30 31 37 2c 36 30 30 2e 36 2c 27 72 73 74 75  .017,600.6,'rstu
08a0: 76 77 78 79 7a 27 2c 27 76 75 74 73 72 71 70 27  vwxyz','vutsrqp'
08b0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
08c0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 31 38 2c  TO t1 VALUES(18,
08d0: 31 39 38 2c 36 30 30 36 2c 31 38 2e 30 31 38 2c  198,6006,18.018,
08e0: 36 30 30 2e 36 2c 27 73 74 75 76 77 78 79 7a 61  600.6,'stuvwxyza
08f0: 27 2c 27 75 74 73 72 71 70 6f 27 29 3b 0a 20 20  ','utsrqpo');.  
0900: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
0910: 20 56 41 4c 55 45 53 28 31 39 2c 32 30 39 2c 37   VALUES(19,209,7
0920: 30 30 37 2c 31 39 2e 30 31 39 2c 37 30 30 2e 37  007,19.019,700.7
0930: 2c 27 74 75 76 77 78 79 7a 61 62 27 2c 27 75 74  ,'tuvwxyzab','ut
0940: 73 72 71 70 6f 27 29 3b 0a 20 20 20 20 49 4e 53  srqpo');.    INS
0950: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
0960: 45 53 28 32 30 2c 32 32 30 2c 37 30 30 37 2c 32  ES(20,220,7007,2
0970: 30 2e 30 32 2c 37 30 30 2e 37 2c 27 75 76 77 78  0.02,700.7,'uvwx
0980: 79 7a 61 62 63 27 2c 27 75 74 73 72 71 70 6f 27  yzabc','utsrqpo'
0990: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
09a0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 32 31 2c  TO t1 VALUES(21,
09b0: 32 33 31 2c 37 30 30 37 2c 32 31 2e 30 32 31 2c  231,7007,21.021,
09c0: 37 30 30 2e 37 2c 27 76 77 78 79 7a 61 62 63 64  700.7,'vwxyzabcd
09d0: 27 2c 27 75 74 73 72 71 70 6f 27 29 3b 0a 20 20  ','utsrqpo');.  
09e0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
09f0: 20 56 41 4c 55 45 53 28 32 32 2c 32 34 32 2c 38   VALUES(22,242,8
0a00: 30 30 38 2c 32 32 2e 30 32 32 2c 38 30 30 2e 38  008,22.022,800.8
0a10: 2c 27 77 78 79 7a 61 62 63 64 65 27 2c 27 75 74  ,'wxyzabcde','ut
0a20: 73 72 71 70 6f 27 29 3b 0a 20 20 20 20 49 4e 53  srqpo');.    INS
0a30: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
0a40: 45 53 28 32 33 2c 32 35 33 2c 38 30 30 38 2c 32  ES(23,253,8008,2
0a50: 33 2e 30 32 33 2c 38 30 30 2e 38 2c 27 78 79 7a  3.023,800.8,'xyz
0a60: 61 62 63 64 65 66 27 2c 27 74 73 72 71 70 6f 6e  abcdef','tsrqpon
0a70: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
0a80: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 32 34  NTO t1 VALUES(24
0a90: 2c 32 36 34 2c 38 30 30 38 2c 32 34 2e 30 32 34  ,264,8008,24.024
0aa0: 2c 38 30 30 2e 38 2c 27 79 7a 61 62 63 64 65 66  ,800.8,'yzabcdef
0ab0: 67 27 2c 27 74 73 72 71 70 6f 6e 27 29 3b 0a 20  g','tsrqpon');. 
0ac0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0ad0: 31 20 56 41 4c 55 45 53 28 32 35 2c 32 37 35 2c  1 VALUES(25,275,
0ae0: 39 30 30 39 2c 32 35 2e 30 32 35 2c 39 30 30 2e  9009,25.025,900.
0af0: 39 2c 27 7a 61 62 63 64 65 66 67 68 27 2c 27 74  9,'zabcdefgh','t
0b00: 73 72 71 70 6f 6e 27 29 3b 0a 20 20 20 20 49 4e  srqpon');.    IN
0b10: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0b20: 55 45 53 28 32 36 2c 32 38 36 2c 39 30 30 39 2c  UES(26,286,9009,
0b30: 32 36 2e 30 32 36 2c 39 30 30 2e 39 2c 27 61 62  26.026,900.9,'ab
0b40: 63 64 65 66 67 68 69 27 2c 27 74 73 72 71 70 6f  cdefghi','tsrqpo
0b50: 6e 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  n');.    INSERT 
0b60: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 32  INTO t1 VALUES(2
0b70: 37 2c 32 39 37 2c 39 30 30 39 2c 32 37 2e 30 32  7,297,9009,27.02
0b80: 37 2c 39 30 30 2e 39 2c 27 62 63 64 65 66 67 68  7,900.9,'bcdefgh
0b90: 69 6a 27 2c 27 74 73 72 71 70 6f 6e 27 29 3b 0a  ij','tsrqpon');.
0ba0: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0bb0: 74 31 20 56 41 4c 55 45 53 28 32 38 2c 33 30 38  t1 VALUES(28,308
0bc0: 2c 31 30 30 31 30 2c 32 38 2e 30 32 38 2c 31 30  ,10010,28.028,10
0bd0: 30 31 2e 30 2c 27 63 64 65 66 67 68 69 6a 6b 27  01.0,'cdefghijk'
0be0: 2c 27 73 72 71 70 6f 6e 6d 27 29 3b 0a 20 20 20  ,'srqponm');.   
0bf0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
0c00: 56 41 4c 55 45 53 28 32 39 2c 33 31 39 2c 31 30  VALUES(29,319,10
0c10: 30 31 30 2c 32 39 2e 30 32 39 2c 31 30 30 31 2e  010,29.029,1001.
0c20: 30 2c 27 64 65 66 67 68 69 6a 6b 6c 27 2c 27 73  0,'defghijkl','s
0c30: 72 71 70 6f 6e 6d 27 29 3b 0a 20 20 20 20 49 4e  rqponm');.    IN
0c40: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0c50: 55 45 53 28 33 30 2c 33 33 30 2c 31 30 30 31 30  UES(30,330,10010
0c60: 2c 33 30 2e 30 33 2c 31 30 30 31 2e 30 2c 27 65  ,30.03,1001.0,'e
0c70: 66 67 68 69 6a 6b 6c 6d 27 2c 27 73 72 71 70 6f  fghijklm','srqpo
0c80: 6e 6d 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  nm');.    INSERT
0c90: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
0ca0: 33 31 2c 33 34 31 2c 31 31 30 31 31 2c 33 31 2e  31,341,11011,31.
0cb0: 30 33 31 2c 31 31 30 31 2e 31 2c 27 66 67 68 69  031,1101.1,'fghi
0cc0: 6a 6b 6c 6d 6e 27 2c 27 73 72 71 70 6f 6e 6d 27  jklmn','srqponm'
0cd0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
0ce0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 33 32 2c  TO t1 VALUES(32,
0cf0: 33 35 32 2c 31 31 30 31 31 2c 33 32 2e 30 33 32  352,11011,32.032
0d00: 2c 31 31 30 31 2e 31 2c 27 67 68 69 6a 6b 6c 6d  ,1101.1,'ghijklm
0d10: 6e 6f 27 2c 27 73 72 71 70 6f 6e 6d 27 29 3b 0a  no','srqponm');.
0d20: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0d30: 74 31 20 56 41 4c 55 45 53 28 33 33 2c 33 36 33  t1 VALUES(33,363
0d40: 2c 31 31 30 31 31 2c 33 33 2e 30 33 33 2c 31 31  ,11011,33.033,11
0d50: 30 31 2e 31 2c 27 68 69 6a 6b 6c 6d 6e 6f 70 27  01.1,'hijklmnop'
0d60: 2c 27 72 71 70 6f 6e 6d 6c 27 29 3b 0a 20 20 20  ,'rqponml');.   
0d70: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
0d80: 56 41 4c 55 45 53 28 33 34 2c 33 37 34 2c 31 32  VALUES(34,374,12
0d90: 30 31 32 2c 33 34 2e 30 33 34 2c 31 32 30 31 2e  012,34.034,1201.
0da0: 32 2c 27 69 6a 6b 6c 6d 6e 6f 70 71 27 2c 27 72  2,'ijklmnopq','r
0db0: 71 70 6f 6e 6d 6c 27 29 3b 0a 20 20 20 20 49 4e  qponml');.    IN
0dc0: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0dd0: 55 45 53 28 33 35 2c 33 38 35 2c 31 32 30 31 32  UES(35,385,12012
0de0: 2c 33 35 2e 30 33 35 2c 31 32 30 31 2e 32 2c 27  ,35.035,1201.2,'
0df0: 6a 6b 6c 6d 6e 6f 70 71 72 27 2c 27 72 71 70 6f  jklmnopqr','rqpo
0e00: 6e 6d 6c 27 29 3b 0a 20 20 20 20 49 4e 53 45 52  nml');.    INSER
0e10: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0e20: 28 33 36 2c 33 39 36 2c 31 32 30 31 32 2c 33 36  (36,396,12012,36
0e30: 2e 30 33 36 2c 31 32 30 31 2e 32 2c 27 6b 6c 6d  .036,1201.2,'klm
0e40: 6e 6f 70 71 72 73 27 2c 27 72 71 70 6f 6e 6d 6c  nopqrs','rqponml
0e50: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
0e60: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 33 37  NTO t1 VALUES(37
0e70: 2c 34 30 37 2c 31 33 30 31 33 2c 33 37 2e 30 33  ,407,13013,37.03
0e80: 37 2c 31 33 30 31 2e 33 2c 27 6c 6d 6e 6f 70 71  7,1301.3,'lmnopq
0e90: 72 73 74 27 2c 27 72 71 70 6f 6e 6d 6c 27 29 3b  rst','rqponml');
0ea0: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0eb0: 20 74 31 20 56 41 4c 55 45 53 28 33 38 2c 34 31   t1 VALUES(38,41
0ec0: 38 2c 31 33 30 31 33 2c 33 38 2e 30 33 38 2c 31  8,13013,38.038,1
0ed0: 33 30 31 2e 33 2c 27 6d 6e 6f 70 71 72 73 74 75  301.3,'mnopqrstu
0ee0: 27 2c 27 71 70 6f 6e 6d 6c 6b 27 29 3b 0a 20 20  ','qponmlk');.  
0ef0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
0f00: 20 56 41 4c 55 45 53 28 33 39 2c 34 32 39 2c 31   VALUES(39,429,1
0f10: 33 30 31 33 2c 33 39 2e 30 33 39 2c 31 33 30 31  3013,39.039,1301
0f20: 2e 33 2c 27 6e 6f 70 71 72 73 74 75 76 27 2c 27  .3,'nopqrstuv','
0f30: 71 70 6f 6e 6d 6c 6b 27 29 3b 0a 20 20 20 20 49  qponmlk');.    I
0f40: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
0f50: 4c 55 45 53 28 34 30 2c 34 34 30 2c 31 34 30 31  LUES(40,440,1401
0f60: 34 2c 34 30 2e 30 34 2c 31 34 30 31 2e 34 2c 27  4,40.04,1401.4,'
0f70: 6f 70 71 72 73 74 75 76 77 27 2c 27 71 70 6f 6e  opqrstuvw','qpon
0f80: 6d 6c 6b 27 29 3b 0a 20 20 20 20 49 4e 53 45 52  mlk');.    INSER
0f90: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0fa0: 28 34 31 2c 34 35 31 2c 31 34 30 31 34 2c 34 31  (41,451,14014,41
0fb0: 2e 30 34 31 2c 31 34 30 31 2e 34 2c 27 70 71 72  .041,1401.4,'pqr
0fc0: 73 74 75 76 77 78 27 2c 27 71 70 6f 6e 6d 6c 6b  stuvwx','qponmlk
0fd0: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
0fe0: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 34 32  NTO t1 VALUES(42
0ff0: 2c 34 36 32 2c 31 34 30 31 34 2c 34 32 2e 30 34  ,462,14014,42.04
1000: 32 2c 31 34 30 31 2e 34 2c 27 71 72 73 74 75 76  2,1401.4,'qrstuv
1010: 77 78 79 27 2c 27 71 70 6f 6e 6d 6c 6b 27 29 3b  wxy','qponmlk');
1020: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
1030: 20 74 31 20 56 41 4c 55 45 53 28 34 33 2c 34 37   t1 VALUES(43,47
1040: 33 2c 31 35 30 31 35 2c 34 33 2e 30 34 33 2c 31  3,15015,43.043,1
1050: 35 30 31 2e 35 2c 27 72 73 74 75 76 77 78 79 7a  501.5,'rstuvwxyz
1060: 27 2c 27 70 6f 6e 6d 6c 6b 6a 27 29 3b 0a 20 20  ','ponmlkj');.  
1070: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
1080: 20 56 41 4c 55 45 53 28 34 34 2c 34 38 34 2c 31   VALUES(44,484,1
1090: 35 30 31 35 2c 34 34 2e 30 34 34 2c 31 35 30 31  5015,44.044,1501
10a0: 2e 35 2c 27 73 74 75 76 77 78 79 7a 61 27 2c 27  .5,'stuvwxyza','
10b0: 70 6f 6e 6d 6c 6b 6a 27 29 3b 0a 20 20 20 20 49  ponmlkj');.    I
10c0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
10d0: 4c 55 45 53 28 34 35 2c 34 39 35 2c 31 35 30 31  LUES(45,495,1501
10e0: 35 2c 34 35 2e 30 34 35 2c 31 35 30 31 2e 35 2c  5,45.045,1501.5,
10f0: 27 74 75 76 77 78 79 7a 61 62 27 2c 27 70 6f 6e  'tuvwxyzab','pon
1100: 6d 6c 6b 6a 27 29 3b 0a 20 20 20 20 49 4e 53 45  mlkj');.    INSE
1110: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
1120: 53 28 34 36 2c 35 30 36 2c 31 36 30 31 36 2c 34  S(46,506,16016,4
1130: 36 2e 30 34 36 2c 31 36 30 31 2e 36 2c 27 75 76  6.046,1601.6,'uv
1140: 77 78 79 7a 61 62 63 27 2c 27 70 6f 6e 6d 6c 6b  wxyzabc','ponmlk
1150: 6a 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  j');.    INSERT 
1160: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 34  INTO t1 VALUES(4
1170: 37 2c 35 31 37 2c 31 36 30 31 36 2c 34 37 2e 30  7,517,16016,47.0
1180: 34 37 2c 31 36 30 31 2e 36 2c 27 76 77 78 79 7a  47,1601.6,'vwxyz
1190: 61 62 63 64 27 2c 27 70 6f 6e 6d 6c 6b 6a 27 29  abcd','ponmlkj')
11a0: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
11b0: 4f 20 74 31 20 56 41 4c 55 45 53 28 34 38 2c 35  O t1 VALUES(48,5
11c0: 32 38 2c 31 36 30 31 36 2c 34 38 2e 30 34 38 2c  28,16016,48.048,
11d0: 31 36 30 31 2e 36 2c 27 77 78 79 7a 61 62 63 64  1601.6,'wxyzabcd
11e0: 65 27 2c 27 6f 6e 6d 6c 6b 6a 69 27 29 3b 0a 20  e','onmlkji');. 
11f0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1200: 31 20 56 41 4c 55 45 53 28 34 39 2c 35 33 39 2c  1 VALUES(49,539,
1210: 31 37 30 31 37 2c 34 39 2e 30 34 39 2c 31 37 30  17017,49.049,170
1220: 31 2e 37 2c 27 78 79 7a 61 62 63 64 65 66 27 2c  1.7,'xyzabcdef',
1230: 27 6f 6e 6d 6c 6b 6a 69 27 29 3b 0a 20 20 20 20  'onmlkji');.    
1240: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
1250: 41 4c 55 45 53 28 35 30 2c 35 35 30 2c 31 37 30  ALUES(50,550,170
1260: 31 37 2c 35 30 2e 30 35 2c 31 37 30 31 2e 37 2c  17,50.05,1701.7,
1270: 27 79 7a 61 62 63 64 65 66 67 27 2c 27 6f 6e 6d  'yzabcdefg','onm
1280: 6c 6b 6a 69 27 29 3b 0a 20 20 20 20 49 4e 53 45  lkji');.    INSE
1290: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
12a0: 53 28 35 31 2c 35 36 31 2c 31 37 30 31 37 2c 35  S(51,561,17017,5
12b0: 31 2e 30 35 31 2c 31 37 30 31 2e 37 2c 27 7a 61  1.051,1701.7,'za
12c0: 62 63 64 65 66 67 68 27 2c 27 6f 6e 6d 6c 6b 6a  bcdefgh','onmlkj
12d0: 69 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  i');.    INSERT 
12e0: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 35  INTO t1 VALUES(5
12f0: 32 2c 35 37 32 2c 31 38 30 31 38 2c 35 32 2e 30  2,572,18018,52.0
1300: 35 32 2c 31 38 30 31 2e 38 2c 27 61 62 63 64 65  52,1801.8,'abcde
1310: 66 67 68 69 27 2c 27 6f 6e 6d 6c 6b 6a 69 27 29  fghi','onmlkji')
1320: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
1330: 4f 20 74 31 20 56 41 4c 55 45 53 28 35 33 2c 35  O t1 VALUES(53,5
1340: 38 33 2c 31 38 30 31 38 2c 35 33 2e 30 35 33 2c  83,18018,53.053,
1350: 31 38 30 31 2e 38 2c 27 62 63 64 65 66 67 68 69  1801.8,'bcdefghi
1360: 6a 27 2c 27 6e 6d 6c 6b 6a 69 68 27 29 3b 0a 20  j','nmlkjih');. 
1370: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1380: 31 20 56 41 4c 55 45 53 28 35 34 2c 35 39 34 2c  1 VALUES(54,594,
1390: 31 38 30 31 38 2c 35 34 2e 30 35 34 2c 31 38 30  18018,54.054,180
13a0: 31 2e 38 2c 27 63 64 65 66 67 68 69 6a 6b 27 2c  1.8,'cdefghijk',
13b0: 27 6e 6d 6c 6b 6a 69 68 27 29 3b 0a 20 20 20 20  'nmlkjih');.    
13c0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
13d0: 41 4c 55 45 53 28 35 35 2c 36 30 35 2c 31 39 30  ALUES(55,605,190
13e0: 31 39 2c 35 35 2e 30 35 35 2c 31 39 30 31 2e 39  19,55.055,1901.9
13f0: 2c 27 64 65 66 67 68 69 6a 6b 6c 27 2c 27 6e 6d  ,'defghijkl','nm
1400: 6c 6b 6a 69 68 27 29 3b 0a 20 20 20 20 49 4e 53  lkjih');.    INS
1410: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
1420: 45 53 28 35 36 2c 36 31 36 2c 31 39 30 31 39 2c  ES(56,616,19019,
1430: 35 36 2e 30 35 36 2c 31 39 30 31 2e 39 2c 27 65  56.056,1901.9,'e
1440: 66 67 68 69 6a 6b 6c 6d 27 2c 27 6e 6d 6c 6b 6a  fghijklm','nmlkj
1450: 69 68 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  ih');.    INSERT
1460: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
1470: 35 37 2c 36 32 37 2c 31 39 30 31 39 2c 35 37 2e  57,627,19019,57.
1480: 30 35 37 2c 31 39 30 31 2e 39 2c 27 66 67 68 69  057,1901.9,'fghi
1490: 6a 6b 6c 6d 6e 27 2c 27 6e 6d 6c 6b 6a 69 68 27  jklmn','nmlkjih'
14a0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
14b0: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 35 38 2c  TO t1 VALUES(58,
14c0: 36 33 38 2c 32 30 30 32 30 2c 35 38 2e 30 35 38  638,20020,58.058
14d0: 2c 32 30 30 32 2e 30 2c 27 67 68 69 6a 6b 6c 6d  ,2002.0,'ghijklm
14e0: 6e 6f 27 2c 27 6d 6c 6b 6a 69 68 67 27 29 3b 0a  no','mlkjihg');.
14f0: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
1500: 74 31 20 56 41 4c 55 45 53 28 35 39 2c 36 34 39  t1 VALUES(59,649
1510: 2c 32 30 30 32 30 2c 35 39 2e 30 35 39 2c 32 30  ,20020,59.059,20
1520: 30 32 2e 30 2c 27 68 69 6a 6b 6c 6d 6e 6f 70 27  02.0,'hijklmnop'
1530: 2c 27 6d 6c 6b 6a 69 68 67 27 29 3b 0a 20 20 20  ,'mlkjihg');.   
1540: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
1550: 56 41 4c 55 45 53 28 36 30 2c 36 36 30 2c 32 30  VALUES(60,660,20
1560: 30 32 30 2c 36 30 2e 30 36 2c 32 30 30 32 2e 30  020,60.06,2002.0
1570: 2c 27 69 6a 6b 6c 6d 6e 6f 70 71 27 2c 27 6d 6c  ,'ijklmnopq','ml
1580: 6b 6a 69 68 67 27 29 3b 0a 20 20 20 20 49 4e 53  kjihg');.    INS
1590: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
15a0: 45 53 28 36 31 2c 36 37 31 2c 32 31 30 32 31 2c  ES(61,671,21021,
15b0: 36 31 2e 30 36 31 2c 32 31 30 32 2e 31 2c 27 6a  61.061,2102.1,'j
15c0: 6b 6c 6d 6e 6f 70 71 72 27 2c 27 6d 6c 6b 6a 69  klmnopqr','mlkji
15d0: 68 67 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  hg');.    INSERT
15e0: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
15f0: 36 32 2c 36 38 32 2c 32 31 30 32 31 2c 36 32 2e  62,682,21021,62.
1600: 30 36 32 2c 32 31 30 32 2e 31 2c 27 6b 6c 6d 6e  062,2102.1,'klmn
1610: 6f 70 71 72 73 27 2c 27 6d 6c 6b 6a 69 68 67 27  opqrs','mlkjihg'
1620: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
1630: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 36 33 2c  TO t1 VALUES(63,
1640: 36 39 33 2c 32 31 30 32 31 2c 36 33 2e 30 36 33  693,21021,63.063
1650: 2c 32 31 30 32 2e 31 2c 27 6c 6d 6e 6f 70 71 72  ,2102.1,'lmnopqr
1660: 73 74 27 2c 27 6c 6b 6a 69 68 67 66 27 29 3b 0a  st','lkjihgf');.
1670: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
1680: 74 31 20 56 41 4c 55 45 53 28 36 34 2c 37 30 34  t1 VALUES(64,704
1690: 2c 32 32 30 32 32 2c 36 34 2e 30 36 34 2c 32 32  ,22022,64.064,22
16a0: 30 32 2e 32 2c 27 6d 6e 6f 70 71 72 73 74 75 27  02.2,'mnopqrstu'
16b0: 2c 27 6c 6b 6a 69 68 67 66 27 29 3b 0a 20 20 20  ,'lkjihgf');.   
16c0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
16d0: 56 41 4c 55 45 53 28 36 35 2c 37 31 35 2c 32 32  VALUES(65,715,22
16e0: 30 32 32 2c 36 35 2e 30 36 35 2c 32 32 30 32 2e  022,65.065,2202.
16f0: 32 2c 27 6e 6f 70 71 72 73 74 75 76 27 2c 27 6c  2,'nopqrstuv','l
1700: 6b 6a 69 68 67 66 27 29 3b 0a 20 20 20 20 49 4e  kjihgf');.    IN
1710: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
1720: 55 45 53 28 36 36 2c 37 32 36 2c 32 32 30 32 32  UES(66,726,22022
1730: 2c 36 36 2e 30 36 36 2c 32 32 30 32 2e 32 2c 27  ,66.066,2202.2,'
1740: 6f 70 71 72 73 74 75 76 77 27 2c 27 6c 6b 6a 69  opqrstuvw','lkji
1750: 68 67 66 27 29 3b 0a 20 20 20 20 49 4e 53 45 52  hgf');.    INSER
1760: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
1770: 28 36 37 2c 37 33 37 2c 32 33 30 32 33 2c 36 37  (67,737,23023,67
1780: 2e 30 36 37 2c 32 33 30 32 2e 33 2c 27 70 71 72  .067,2302.3,'pqr
1790: 73 74 75 76 77 78 27 2c 27 6c 6b 6a 69 68 67 66  stuvwx','lkjihgf
17a0: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
17b0: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 36 38  NTO t1 VALUES(68
17c0: 2c 37 34 38 2c 32 33 30 32 33 2c 36 38 2e 30 36  ,748,23023,68.06
17d0: 38 2c 32 33 30 32 2e 33 2c 27 71 72 73 74 75 76  8,2302.3,'qrstuv
17e0: 77 78 79 27 2c 27 6b 6a 69 68 67 66 65 27 29 3b  wxy','kjihgfe');
17f0: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
1800: 20 74 31 20 56 41 4c 55 45 53 28 36 39 2c 37 35   t1 VALUES(69,75
1810: 39 2c 32 33 30 32 33 2c 36 39 2e 30 36 39 2c 32  9,23023,69.069,2
1820: 33 30 32 2e 33 2c 27 72 73 74 75 76 77 78 79 7a  302.3,'rstuvwxyz
1830: 27 2c 27 6b 6a 69 68 67 66 65 27 29 3b 0a 20 20  ','kjihgfe');.  
1840: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
1850: 20 56 41 4c 55 45 53 28 37 30 2c 37 37 30 2c 32   VALUES(70,770,2
1860: 34 30 32 34 2c 37 30 2e 30 37 2c 32 34 30 32 2e  4024,70.07,2402.
1870: 34 2c 27 73 74 75 76 77 78 79 7a 61 27 2c 27 6b  4,'stuvwxyza','k
1880: 6a 69 68 67 66 65 27 29 3b 0a 20 20 20 20 49 4e  jihgfe');.    IN
1890: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
18a0: 55 45 53 28 37 31 2c 37 38 31 2c 32 34 30 32 34  UES(71,781,24024
18b0: 2c 37 31 2e 30 37 31 2c 32 34 30 32 2e 34 2c 27  ,71.071,2402.4,'
18c0: 74 75 76 77 78 79 7a 61 62 27 2c 27 6b 6a 69 68  tuvwxyzab','kjih
18d0: 67 66 65 27 29 3b 0a 20 20 20 20 49 4e 53 45 52  gfe');.    INSER
18e0: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
18f0: 28 37 32 2c 37 39 32 2c 32 34 30 32 34 2c 37 32  (72,792,24024,72
1900: 2e 30 37 32 2c 32 34 30 32 2e 34 2c 27 75 76 77  .072,2402.4,'uvw
1910: 78 79 7a 61 62 63 27 2c 27 6b 6a 69 68 67 66 65  xyzabc','kjihgfe
1920: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
1930: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 37 33  NTO t1 VALUES(73
1940: 2c 38 30 33 2c 32 35 30 32 35 2c 37 33 2e 30 37  ,803,25025,73.07
1950: 33 2c 32 35 30 32 2e 35 2c 27 76 77 78 79 7a 61  3,2502.5,'vwxyza
1960: 62 63 64 27 2c 27 6a 69 68 67 66 65 64 27 29 3b  bcd','jihgfed');
1970: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
1980: 20 74 31 20 56 41 4c 55 45 53 28 37 34 2c 38 31   t1 VALUES(74,81
1990: 34 2c 32 35 30 32 35 2c 37 34 2e 30 37 34 2c 32  4,25025,74.074,2
19a0: 35 30 32 2e 35 2c 27 77 78 79 7a 61 62 63 64 65  502.5,'wxyzabcde
19b0: 27 2c 27 6a 69 68 67 66 65 64 27 29 3b 0a 20 20  ','jihgfed');.  
19c0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
19d0: 20 56 41 4c 55 45 53 28 37 35 2c 38 32 35 2c 32   VALUES(75,825,2
19e0: 35 30 32 35 2c 37 35 2e 30 37 35 2c 32 35 30 32  5025,75.075,2502
19f0: 2e 35 2c 27 78 79 7a 61 62 63 64 65 66 27 2c 27  .5,'xyzabcdef','
1a00: 6a 69 68 67 66 65 64 27 29 3b 0a 20 20 20 20 49  jihgfed');.    I
1a10: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
1a20: 4c 55 45 53 28 37 36 2c 38 33 36 2c 32 36 30 32  LUES(76,836,2602
1a30: 36 2c 37 36 2e 30 37 36 2c 32 36 30 32 2e 36 2c  6,76.076,2602.6,
1a40: 27 79 7a 61 62 63 64 65 66 67 27 2c 27 6a 69 68  'yzabcdefg','jih
1a50: 67 66 65 64 27 29 3b 0a 20 20 20 20 49 4e 53 45  gfed');.    INSE
1a60: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
1a70: 53 28 37 37 2c 38 34 37 2c 32 36 30 32 36 2c 37  S(77,847,26026,7
1a80: 37 2e 30 37 37 2c 32 36 30 32 2e 36 2c 27 7a 61  7.077,2602.6,'za
1a90: 62 63 64 65 66 67 68 27 2c 27 6a 69 68 67 66 65  bcdefgh','jihgfe
1aa0: 64 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  d');.    INSERT 
1ab0: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 37  INTO t1 VALUES(7
1ac0: 38 2c 38 35 38 2c 32 36 30 32 36 2c 37 38 2e 30  8,858,26026,78.0
1ad0: 37 38 2c 32 36 30 32 2e 36 2c 27 61 62 63 64 65  78,2602.6,'abcde
1ae0: 66 67 68 69 27 2c 27 69 68 67 66 65 64 63 27 29  fghi','ihgfedc')
1af0: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
1b00: 4f 20 74 31 20 56 41 4c 55 45 53 28 37 39 2c 38  O t1 VALUES(79,8
1b10: 36 39 2c 32 37 30 32 37 2c 37 39 2e 30 37 39 2c  69,27027,79.079,
1b20: 32 37 30 32 2e 37 2c 27 62 63 64 65 66 67 68 69  2702.7,'bcdefghi
1b30: 6a 27 2c 27 69 68 67 66 65 64 63 27 29 3b 0a 20  j','ihgfedc');. 
1b40: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1b50: 31 20 56 41 4c 55 45 53 28 38 30 2c 38 38 30 2c  1 VALUES(80,880,
1b60: 32 37 30 32 37 2c 38 30 2e 30 38 2c 32 37 30 32  27027,80.08,2702
1b70: 2e 37 2c 27 63 64 65 66 67 68 69 6a 6b 27 2c 27  .7,'cdefghijk','
1b80: 69 68 67 66 65 64 63 27 29 3b 0a 20 20 20 20 49  ihgfedc');.    I
1b90: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
1ba0: 4c 55 45 53 28 38 31 2c 38 39 31 2c 32 37 30 32  LUES(81,891,2702
1bb0: 37 2c 38 31 2e 30 38 31 2c 32 37 30 32 2e 37 2c  7,81.081,2702.7,
1bc0: 27 64 65 66 67 68 69 6a 6b 6c 27 2c 27 69 68 67  'defghijkl','ihg
1bd0: 66 65 64 63 27 29 3b 0a 20 20 20 20 49 4e 53 45  fedc');.    INSE
1be0: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
1bf0: 53 28 38 32 2c 39 30 32 2c 32 38 30 32 38 2c 38  S(82,902,28028,8
1c00: 32 2e 30 38 32 2c 32 38 30 32 2e 38 2c 27 65 66  2.082,2802.8,'ef
1c10: 67 68 69 6a 6b 6c 6d 27 2c 27 69 68 67 66 65 64  ghijklm','ihgfed
1c20: 63 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  c');.    INSERT 
1c30: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 38  INTO t1 VALUES(8
1c40: 33 2c 39 31 33 2c 32 38 30 32 38 2c 38 33 2e 30  3,913,28028,83.0
1c50: 38 33 2c 32 38 30 32 2e 38 2c 27 66 67 68 69 6a  83,2802.8,'fghij
1c60: 6b 6c 6d 6e 27 2c 27 68 67 66 65 64 63 62 27 29  klmn','hgfedcb')
1c70: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
1c80: 4f 20 74 31 20 56 41 4c 55 45 53 28 38 34 2c 39  O t1 VALUES(84,9
1c90: 32 34 2c 32 38 30 32 38 2c 38 34 2e 30 38 34 2c  24,28028,84.084,
1ca0: 32 38 30 32 2e 38 2c 27 67 68 69 6a 6b 6c 6d 6e  2802.8,'ghijklmn
1cb0: 6f 27 2c 27 68 67 66 65 64 63 62 27 29 3b 0a 20  o','hgfedcb');. 
1cc0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1cd0: 31 20 56 41 4c 55 45 53 28 38 35 2c 39 33 35 2c  1 VALUES(85,935,
1ce0: 32 39 30 32 39 2c 38 35 2e 30 38 35 2c 32 39 30  29029,85.085,290
1cf0: 32 2e 39 2c 27 68 69 6a 6b 6c 6d 6e 6f 70 27 2c  2.9,'hijklmnop',
1d00: 27 68 67 66 65 64 63 62 27 29 3b 0a 20 20 20 20  'hgfedcb');.    
1d10: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
1d20: 41 4c 55 45 53 28 38 36 2c 39 34 36 2c 32 39 30  ALUES(86,946,290
1d30: 32 39 2c 38 36 2e 30 38 36 2c 32 39 30 32 2e 39  29,86.086,2902.9
1d40: 2c 27 69 6a 6b 6c 6d 6e 6f 70 71 27 2c 27 68 67  ,'ijklmnopq','hg
1d50: 66 65 64 63 62 27 29 3b 0a 20 20 20 20 49 4e 53  fedcb');.    INS
1d60: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
1d70: 45 53 28 38 37 2c 39 35 37 2c 32 39 30 32 39 2c  ES(87,957,29029,
1d80: 38 37 2e 30 38 37 2c 32 39 30 32 2e 39 2c 27 6a  87.087,2902.9,'j
1d90: 6b 6c 6d 6e 6f 70 71 72 27 2c 27 68 67 66 65 64  klmnopqr','hgfed
1da0: 63 62 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  cb');.    INSERT
1db0: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
1dc0: 38 38 2c 39 36 38 2c 33 30 30 33 30 2c 38 38 2e  88,968,30030,88.
1dd0: 30 38 38 2c 33 30 30 33 2e 30 2c 27 6b 6c 6d 6e  088,3003.0,'klmn
1de0: 6f 70 71 72 73 27 2c 27 67 66 65 64 63 62 61 27  opqrs','gfedcba'
1df0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
1e00: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 38 39 2c  TO t1 VALUES(89,
1e10: 39 37 39 2c 33 30 30 33 30 2c 38 39 2e 30 38 39  979,30030,89.089
1e20: 2c 33 30 30 33 2e 30 2c 27 6c 6d 6e 6f 70 71 72  ,3003.0,'lmnopqr
1e30: 73 74 27 2c 27 67 66 65 64 63 62 61 27 29 3b 0a  st','gfedcba');.
1e40: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
1e50: 74 31 20 56 41 4c 55 45 53 28 39 30 2c 4e 55 4c  t1 VALUES(90,NUL
1e60: 4c 2c 33 30 30 33 30 2c 39 30 2e 30 39 2c 33 30  L,30030,90.09,30
1e70: 30 33 2e 30 2c 27 6d 6e 6f 70 71 72 73 74 75 27  03.0,'mnopqrstu'
1e80: 2c 27 67 66 65 64 63 62 61 27 29 3b 0a 20 20 20  ,'gfedcba');.   
1e90: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
1ea0: 56 41 4c 55 45 53 28 39 31 2c 31 30 30 31 2c 4e  VALUES(91,1001,N
1eb0: 55 4c 4c 2c 39 31 2e 30 39 31 2c 33 31 30 33 2e  ULL,91.091,3103.
1ec0: 31 2c 27 6e 6f 70 71 72 73 74 75 76 27 2c 27 67  1,'nopqrstuv','g
1ed0: 66 65 64 63 62 61 27 29 3b 0a 20 20 20 20 49 4e  fedcba');.    IN
1ee0: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
1ef0: 55 45 53 28 39 32 2c 31 30 31 32 2c 33 31 30 33  UES(92,1012,3103
1f00: 31 2c 4e 55 4c 4c 2c 33 31 30 33 2e 31 2c 27 6f  1,NULL,3103.1,'o
1f10: 70 71 72 73 74 75 76 77 27 2c 27 67 66 65 64 63  pqrstuvw','gfedc
1f20: 62 61 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  ba');.    INSERT
1f30: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
1f40: 39 33 2c 31 30 32 33 2c 33 31 30 33 31 2c 39 33  93,1023,31031,93
1f50: 2e 30 39 33 2c 4e 55 4c 4c 2c 27 70 71 72 73 74  .093,NULL,'pqrst
1f60: 75 76 77 78 27 2c 27 66 65 64 63 62 61 7a 27 29  uvwx','fedcbaz')
1f70: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
1f80: 4f 20 74 31 20 56 41 4c 55 45 53 28 39 34 2c 31  O t1 VALUES(94,1
1f90: 30 33 34 2c 33 32 30 33 32 2c 39 34 2e 30 39 34  034,32032,94.094
1fa0: 2c 33 32 30 33 2e 32 2c 4e 55 4c 4c 2c 27 66 65  ,3203.2,NULL,'fe
1fb0: 64 63 62 61 7a 27 29 3b 0a 20 20 20 20 49 4e 53  dcbaz');.    INS
1fc0: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
1fd0: 45 53 28 39 35 2c 31 30 34 35 2c 33 32 30 33 32  ES(95,1045,32032
1fe0: 2c 39 35 2e 30 39 35 2c 33 32 30 33 2e 32 2c 27  ,95.095,3203.2,'
1ff0: 72 73 74 75 76 77 78 79 7a 27 2c 4e 55 4c 4c 29  rstuvwxyz',NULL)
2000: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
2010: 4f 20 74 31 20 56 41 4c 55 45 53 28 39 36 2c 4e  O t1 VALUES(96,N
2020: 55 4c 4c 2c 4e 55 4c 4c 2c 39 36 2e 30 39 36 2c  ULL,NULL,96.096,
2030: 33 32 30 33 2e 32 2c 27 73 74 75 76 77 78 79 7a  3203.2,'stuvwxyz
2040: 61 27 2c 27 66 65 64 63 62 61 7a 27 29 3b 0a 20  a','fedcbaz');. 
2050: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
2060: 31 20 56 41 4c 55 45 53 28 39 37 2c 31 30 36 37  1 VALUES(97,1067
2070: 2c 33 33 30 33 33 2c 4e 55 4c 4c 2c 4e 55 4c 4c  ,33033,NULL,NULL
2080: 2c 27 74 75 76 77 78 79 7a 61 62 27 2c 27 66 65  ,'tuvwxyzab','fe
2090: 64 63 62 61 7a 27 29 3b 0a 20 20 20 20 49 4e 53  dcbaz');.    INS
20a0: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
20b0: 45 53 28 39 38 2c 31 30 37 38 2c 33 33 30 33 33  ES(98,1078,33033
20c0: 2c 39 38 2e 30 39 38 2c 33 33 30 33 2e 33 2c 4e  ,98.098,3303.3,N
20d0: 55 4c 4c 2c 4e 55 4c 4c 29 3b 0a 20 20 20 20 49  ULL,NULL);.    I
20e0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
20f0: 4c 55 45 53 28 39 39 2c 4e 55 4c 4c 2c 4e 55 4c  LUES(99,NULL,NUL
2100: 4c 2c 4e 55 4c 4c 2c 4e 55 4c 4c 2c 4e 55 4c 4c  L,NULL,NULL,NULL
2110: 2c 4e 55 4c 4c 29 3b 0a 20 20 20 20 43 52 45 41  ,NULL);.    CREA
2120: 54 45 20 49 4e 44 45 58 20 74 31 62 20 4f 4e 20  TE INDEX t1b ON 
2130: 74 31 28 62 29 3b 0a 20 20 20 20 43 52 45 41 54  t1(b);.    CREAT
2140: 45 20 49 4e 44 45 58 20 74 31 63 20 4f 4e 20 74  E INDEX t1c ON t
2150: 31 28 63 29 3b 0a 20 20 20 20 43 52 45 41 54 45  1(c);.    CREATE
2160: 20 49 4e 44 45 58 20 74 31 64 20 4f 4e 20 74 31   INDEX t1d ON t1
2170: 28 64 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20  (d);.    CREATE 
2180: 49 4e 44 45 58 20 74 31 65 20 4f 4e 20 74 31 28  INDEX t1e ON t1(
2190: 65 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49  e);.    CREATE I
21a0: 4e 44 45 58 20 74 31 66 20 4f 4e 20 74 31 28 66  NDEX t1f ON t1(f
21b0: 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e  );.    CREATE IN
21c0: 44 45 58 20 74 31 67 20 4f 4e 20 74 31 28 67 29  DEX t1g ON t1(g)
21d0: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  ;.    CREATE TAB
21e0: 4c 45 20 74 32 28 61 20 49 4e 54 45 47 45 52 20  LE t2(a INTEGER 
21f0: 50 52 49 4d 41 52 59 20 4b 45 59 2c 62 2c 63 2c  PRIMARY KEY,b,c,
2200: 64 2c 65 2c 66 2c 67 29 3b 0a 20 20 20 20 49 4e  d,e,f,g);.    IN
2210: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 53 45 4c  SERT INTO t2 SEL
2220: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20  ECT * FROM t1;. 
2230: 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20     CREATE INDEX 
2240: 74 32 62 20 4f 4e 20 74 32 28 62 2c 63 29 3b 0a  t2b ON t2(b,c);.
2250: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
2260: 20 74 32 63 20 4f 4e 20 74 32 28 63 2c 65 29 3b   t2c ON t2(c,e);
2270: 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45  .    CREATE INDE
2280: 58 20 74 32 64 20 4f 4e 20 74 32 28 64 2c 67 29  X t2d ON t2(d,g)
2290: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44  ;.    CREATE IND
22a0: 45 58 20 74 32 65 20 4f 4e 20 74 32 28 65 2c 66  EX t2e ON t2(e,f
22b0: 2c 67 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20  ,g);.    CREATE 
22c0: 49 4e 44 45 58 20 74 32 66 20 4f 4e 20 74 32 28  INDEX t2f ON t2(
22d0: 66 2c 62 2c 64 2c 63 29 3b 0a 20 20 20 20 43 52  f,b,d,c);.    CR
22e0: 45 41 54 45 20 49 4e 44 45 58 20 74 32 67 20 4f  EATE INDEX t2g O
22f0: 4e 20 74 32 28 67 2c 66 29 3b 0a 20 20 20 20 43  N t2(g,f);.    C
2300: 52 45 41 54 45 20 54 41 42 4c 45 20 74 33 28 78  REATE TABLE t3(x
2310: 2c 79 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  ,y);.    INSERT 
2320: 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28 31  INTO t3 VALUES(1
2330: 2c 38 30 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  ,80);.    INSERT
2340: 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28   INTO t3 VALUES(
2350: 32 2c 38 30 29 3b 0a 20 20 20 20 43 52 45 41 54  2,80);.    CREAT
2360: 45 20 54 41 42 4c 45 20 74 34 28 61 20 49 4e 54  E TABLE t4(a INT
2370: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
2380: 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 29 3b 0a 20  ,b,c,d,e,f,g);. 
2390: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
23a0: 34 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  4 SELECT * FROM 
23b0: 74 31 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49  t1;.    CREATE I
23c0: 4e 44 45 58 20 74 34 62 20 4f 4e 20 74 34 28 62  NDEX t4b ON t4(b
23d0: 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e  );.    CREATE IN
23e0: 44 45 58 20 74 34 63 20 4f 4e 20 74 34 28 63 29  DEX t4c ON t4(c)
23f0: 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 64 6f 5f 74  ;.  }.} {}..do_t
2400: 65 73 74 20 77 68 65 72 65 39 2d 31 2e 32 2e 31  est where9-1.2.1
2410: 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70 73   {.  count_steps
2420: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 20   {.    SELECT a 
2430: 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 57 48 45  FROM t1.     WHE
2440: 52 45 20 62 20 49 53 20 4e 55 4c 4c 0a 20 20 20  RE b IS NULL.   
2450: 20 20 20 20 20 4f 52 20 63 20 49 53 20 4e 55 4c       OR c IS NUL
2460: 4c 0a 20 20 20 20 20 20 20 20 4f 52 20 64 20 49  L.        OR d I
2470: 53 20 4e 55 4c 4c 0a 20 20 20 20 4f 52 44 45 52  S NULL.    ORDER
2480: 20 42 59 20 61 0a 20 20 7d 0a 7d 20 7b 39 30 20   BY a.  }.} {90 
2490: 39 31 20 39 32 20 39 36 20 39 37 20 39 39 20 73  91 92 96 97 99 s
24a0: 63 61 6e 20 30 20 73 6f 72 74 20 31 7d 0a 64 6f  can 0 sort 1}.do
24b0: 5f 74 65 73 74 20 77 68 65 72 65 39 2d 31 2e 32  _test where9-1.2
24c0: 2e 32 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65  .2 {.  count_ste
24d0: 70 73 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ps {.    SELECT 
24e0: 61 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 57  a FROM t1.     W
24f0: 48 45 52 45 20 2b 62 20 49 53 20 4e 55 4c 4c 0a  HERE +b IS NULL.
2500: 20 20 20 20 20 20 20 20 4f 52 20 63 20 49 53 20          OR c IS 
2510: 4e 55 4c 4c 0a 20 20 20 20 20 20 20 20 4f 52 20  NULL.        OR 
2520: 64 20 49 53 20 4e 55 4c 4c 0a 20 20 20 20 4f 52  d IS NULL.    OR
2530: 44 45 52 20 42 59 20 61 0a 20 20 7d 0a 7d 20 7b  DER BY a.  }.} {
2540: 39 30 20 39 31 20 39 32 20 39 36 20 39 37 20 39  90 91 92 96 97 9
2550: 39 20 73 63 61 6e 20 39 38 20 73 6f 72 74 20 30  9 scan 98 sort 0
2560: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39  }.do_test where9
2570: 2d 31 2e 32 2e 33 20 7b 0a 20 20 63 6f 75 6e 74  -1.2.3 {.  count
2580: 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 53 45 4c  _steps {.    SEL
2590: 45 43 54 20 61 20 46 52 4f 4d 20 74 31 0a 20 20  ECT a FROM t1.  
25a0: 20 20 20 57 48 45 52 45 20 62 20 49 53 20 4e 55     WHERE b IS NU
25b0: 4c 4c 0a 20 20 20 20 20 20 20 20 4f 52 20 2b 63  LL.        OR +c
25c0: 20 49 53 20 4e 55 4c 4c 0a 20 20 20 20 20 20 20   IS NULL.       
25d0: 20 4f 52 20 64 20 49 53 20 4e 55 4c 4c 0a 20 20   OR d IS NULL.  
25e0: 20 20 4f 52 44 45 52 20 42 59 20 61 0a 20 20 7d    ORDER BY a.  }
25f0: 0a 7d 20 7b 39 30 20 39 31 20 39 32 20 39 36 20  .} {90 91 92 96 
2600: 39 37 20 39 39 20 73 63 61 6e 20 39 38 20 73 6f  97 99 scan 98 so
2610: 72 74 20 30 7d 0a 64 6f 5f 74 65 73 74 20 77 68  rt 0}.do_test wh
2620: 65 72 65 39 2d 31 2e 32 2e 34 20 7b 0a 20 20 63  ere9-1.2.4 {.  c
2630: 6f 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20  ount_steps {.   
2640: 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74   SELECT a FROM t
2650: 31 0a 20 20 20 20 20 57 48 45 52 45 20 62 20 49  1.     WHERE b I
2660: 53 20 4e 55 4c 4c 0a 20 20 20 20 20 20 20 20 4f  S NULL.        O
2670: 52 20 63 20 49 53 20 4e 55 4c 4c 0a 20 20 20 20  R c IS NULL.    
2680: 20 20 20 20 4f 52 20 2b 64 20 49 53 20 4e 55 4c      OR +d IS NUL
2690: 4c 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61  L.    ORDER BY a
26a0: 0a 20 20 7d 0a 7d 20 7b 39 30 20 39 31 20 39 32  .  }.} {90 91 92
26b0: 20 39 36 20 39 37 20 39 39 20 73 63 61 6e 20 39   96 97 99 scan 9
26c0: 38 20 73 6f 72 74 20 30 7d 0a 64 6f 5f 74 65 73  8 sort 0}.do_tes
26d0: 74 20 77 68 65 72 65 39 2d 31 2e 32 2e 35 20 7b  t where9-1.2.5 {
26e0: 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70 73 20 7b  .  count_steps {
26f0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 20 46 52  .    SELECT a FR
2700: 4f 4d 20 74 34 0a 20 20 20 20 20 57 48 45 52 45  OM t4.     WHERE
2710: 20 62 20 49 53 20 4e 55 4c 4c 0a 20 20 20 20 20   b IS NULL.     
2720: 20 20 20 4f 52 20 63 20 49 53 20 4e 55 4c 4c 0a     OR c IS NULL.
2730: 20 20 20 20 20 20 20 20 4f 52 20 64 20 49 53 20          OR d IS 
2740: 4e 55 4c 4c 0a 20 20 20 20 4f 52 44 45 52 20 42  NULL.    ORDER B
2750: 59 20 61 0a 20 20 7d 0a 7d 20 7b 39 30 20 39 31  Y a.  }.} {90 91
2760: 20 39 32 20 39 36 20 39 37 20 39 39 20 73 63 61   92 96 97 99 sca
2770: 6e 20 39 38 20 73 6f 72 74 20 30 7d 0a 0a 64 6f  n 98 sort 0}..do
2780: 5f 74 65 73 74 20 77 68 65 72 65 39 2d 31 2e 33  _test where9-1.3
2790: 2e 31 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65  .1 {.  count_ste
27a0: 70 73 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ps {.    SELECT 
27b0: 61 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 57  a FROM t1.     W
27c0: 48 45 52 45 20 28 62 20 49 53 20 4e 55 4c 4c 20  HERE (b IS NULL 
27d0: 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 20 41  AND c NOT NULL A
27e0: 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20  ND d NOT NULL). 
27f0: 20 20 20 20 20 20 20 4f 52 20 28 62 20 4e 4f 54         OR (b NOT
2800: 20 4e 55 4c 4c 20 41 4e 44 20 63 20 49 53 20 4e   NULL AND c IS N
2810: 55 4c 4c 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55  ULL AND d NOT NU
2820: 4c 4c 29 0a 20 20 20 20 20 20 20 20 4f 52 20 28  LL).        OR (
2830: 62 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 63  b NOT NULL AND c
2840: 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 64 20   NOT NULL AND d 
2850: 49 53 20 4e 55 4c 4c 29 0a 20 20 20 20 4f 52 44  IS NULL).    ORD
2860: 45 52 20 42 59 20 61 0a 20 20 7d 0a 7d 20 7b 39  ER BY a.  }.} {9
2870: 30 20 39 31 20 39 32 20 39 37 20 73 63 61 6e 20  0 91 92 97 scan 
2880: 30 20 73 6f 72 74 20 31 7d 0a 64 6f 5f 74 65 73  0 sort 1}.do_tes
2890: 74 20 77 68 65 72 65 39 2d 31 2e 33 2e 32 20 7b  t where9-1.3.2 {
28a0: 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70 73 20 7b  .  count_steps {
28b0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 20 46 52  .    SELECT a FR
28c0: 4f 4d 20 74 34 0a 20 20 20 20 20 57 48 45 52 45  OM t4.     WHERE
28d0: 20 28 62 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20   (b IS NULL AND 
28e0: 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 64  c NOT NULL AND d
28f0: 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20 20 20 20   NOT NULL).     
2900: 20 20 20 4f 52 20 28 62 20 4e 4f 54 20 4e 55 4c     OR (b NOT NUL
2910: 4c 20 41 4e 44 20 63 20 49 53 20 4e 55 4c 4c 20  L AND c IS NULL 
2920: 41 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c 29 0a  AND d NOT NULL).
2930: 20 20 20 20 20 20 20 20 4f 52 20 28 62 20 4e 4f          OR (b NO
2940: 54 20 4e 55 4c 4c 20 41 4e 44 20 63 20 4e 4f 54  T NULL AND c NOT
2950: 20 4e 55 4c 4c 20 41 4e 44 20 64 20 49 53 20 4e   NULL AND d IS N
2960: 55 4c 4c 29 0a 20 20 20 20 4f 52 44 45 52 20 42  ULL).    ORDER B
2970: 59 20 61 0a 20 20 7d 0a 7d 20 7b 39 30 20 39 31  Y a.  }.} {90 91
2980: 20 39 32 20 39 37 20 73 63 61 6e 20 39 38 20 73   92 97 scan 98 s
2990: 6f 72 74 20 30 7d 0a 64 6f 5f 74 65 73 74 20 77  ort 0}.do_test w
29a0: 68 65 72 65 39 2d 31 2e 33 2e 33 20 7b 0a 20 20  here9-1.3.3 {.  
29b0: 63 6f 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20  count_steps {.  
29c0: 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20    SELECT a FROM 
29d0: 74 34 0a 20 20 20 20 20 57 48 45 52 45 20 28 62  t4.     WHERE (b
29e0: 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 63 20   NOT NULL AND c 
29f0: 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 64 20 49  NOT NULL AND d I
2a00: 53 20 4e 55 4c 4c 29 0a 20 20 20 20 20 20 20 20  S NULL).        
2a10: 4f 52 20 28 62 20 49 53 20 4e 55 4c 4c 20 41 4e  OR (b IS NULL AN
2a20: 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44  D c NOT NULL AND
2a30: 20 64 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20 20   d NOT NULL).   
2a40: 20 20 20 20 20 4f 52 20 28 62 20 4e 4f 54 20 4e       OR (b NOT N
2a50: 55 4c 4c 20 41 4e 44 20 63 20 49 53 20 4e 55 4c  ULL AND c IS NUL
2a60: 4c 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c  L AND d NOT NULL
2a70: 29 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61  ).    ORDER BY a
2a80: 0a 20 20 7d 0a 7d 20 7b 39 30 20 39 31 20 39 32  .  }.} {90 91 92
2a90: 20 39 37 20 73 63 61 6e 20 39 38 20 73 6f 72 74   97 scan 98 sort
2aa0: 20 30 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   0}.do_test wher
2ab0: 65 39 2d 31 2e 33 2e 34 20 7b 0a 20 20 63 6f 75  e9-1.3.4 {.  cou
2ac0: 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 53  nt_steps {.    S
2ad0: 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 34 0a  ELECT a FROM t4.
2ae0: 20 20 20 20 20 57 48 45 52 45 20 28 62 20 49 53       WHERE (b IS
2af0: 20 4e 55 4c 4c 20 41 4e 44 20 63 20 4e 4f 54 20   NULL AND c NOT 
2b00: 4e 55 4c 4c 20 41 4e 44 20 64 20 4e 4f 54 20 4e  NULL AND d NOT N
2b10: 55 4c 4c 29 0a 20 20 20 20 20 20 20 20 4f 52 20  ULL).        OR 
2b20: 28 62 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20  (b NOT NULL AND 
2b30: 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 64  c NOT NULL AND d
2b40: 20 49 53 20 4e 55 4c 4c 29 0a 20 20 20 20 20 20   IS NULL).      
2b50: 20 20 4f 52 20 28 62 20 4e 4f 54 20 4e 55 4c 4c    OR (b NOT NULL
2b60: 20 41 4e 44 20 63 20 49 53 20 4e 55 4c 4c 20 41   AND c IS NULL A
2b70: 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20  ND d NOT NULL). 
2b80: 20 20 20 4f 52 44 45 52 20 42 59 20 61 0a 20 20     ORDER BY a.  
2b90: 7d 0a 7d 20 7b 39 30 20 39 31 20 39 32 20 39 37  }.} {90 91 92 97
2ba0: 20 73 63 61 6e 20 39 38 20 73 6f 72 74 20 30 7d   scan 98 sort 0}
2bb0: 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39  ..do_test where9
2bc0: 2d 31 2e 34 20 7b 0a 20 20 63 6f 75 6e 74 5f 73  -1.4 {.  count_s
2bd0: 74 65 70 73 20 7b 0a 20 20 20 20 53 45 4c 45 43  teps {.    SELEC
2be0: 54 20 61 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  T a FROM t1.    
2bf0: 20 57 48 45 52 45 20 28 62 3e 3d 39 35 30 20 41   WHERE (b>=950 A
2c00: 4e 44 20 62 3c 3d 31 30 31 30 29 20 4f 52 20 28  ND b<=1010) OR (
2c10: 62 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 63 20  b IS NULL AND c 
2c20: 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20 20 20 4f 52  NOT NULL).    OR
2c30: 44 45 52 20 42 59 20 61 0a 20 20 7d 0a 7d 20 7b  DER BY a.  }.} {
2c40: 38 37 20 38 38 20 38 39 20 39 30 20 39 31 20 73  87 88 89 90 91 s
2c50: 63 61 6e 20 30 20 73 6f 72 74 20 31 7d 0a 64 6f  can 0 sort 1}.do
2c60: 5f 74 65 73 74 20 77 68 65 72 65 39 2d 31 2e 35  _test where9-1.5
2c70: 20 7b 0a 20 20 23 20 57 68 65 6e 20 74 68 69 73   {.  # When this
2c80: 20 74 65 73 74 20 77 61 73 20 6f 72 69 67 69 6e   test was origin
2c90: 61 6c 6c 79 20 77 72 69 74 74 65 6e 2c 20 53 51  ally written, SQ
2ca0: 4c 69 74 65 20 75 73 65 64 20 61 20 72 6f 77 73  Lite used a rows
2cb0: 65 74 20 6f 62 6a 65 63 74 20 0a 20 20 23 20 74  et object .  # t
2cc0: 6f 20 6f 70 74 69 6d 69 7a 65 20 74 68 65 20 22  o optimize the "
2cd0: 4f 52 44 45 52 20 42 59 20 61 22 20 63 6c 61 75  ORDER BY a" clau
2ce0: 73 65 2e 20 4e 6f 77 20 74 68 61 74 20 69 74 20  se. Now that it 
2cf0: 69 73 20 75 73 69 6e 67 20 61 20 72 6f 77 68 61  is using a rowha
2d00: 73 68 2c 0a 20 20 23 20 74 68 69 73 20 69 73 20  sh,.  # this is 
2d10: 6e 6f 74 20 70 6f 73 73 69 62 6c 65 2e 20 53 6f  not possible. So
2d20: 20 77 65 20 68 61 76 65 20 74 6f 20 63 6f 6d 6d   we have to comm
2d30: 65 6e 74 20 6f 75 74 20 6f 6e 65 20 74 65 72 6d  ent out one term
2d40: 20 6f 66 20 74 68 65 20 4f 52 0a 20 20 23 20 65   of the OR.  # e
2d50: 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 6f 72 64  xpression in ord
2d60: 65 72 20 74 6f 20 70 72 65 76 65 6e 74 20 53 51  er to prevent SQ
2d70: 4c 69 74 65 20 66 72 6f 6d 20 64 65 65 6d 69 6e  Lite from deemin
2d80: 67 20 61 20 66 75 6c 6c 2d 74 61 62 6c 65 0a 20  g a full-table. 
2d90: 20 23 20 73 63 61 6e 20 74 6f 20 62 65 20 61 20   # scan to be a 
2da0: 62 65 74 74 65 72 20 73 74 72 61 74 65 67 79 20  better strategy 
2db0: 74 68 61 6e 20 75 73 69 6e 67 20 6d 75 6c 74 69  than using multi
2dc0: 70 6c 65 20 69 6e 64 65 78 65 73 2c 20 77 68 69  ple indexes, whi
2dd0: 63 68 20 77 6f 75 6c 64 0a 20 20 23 20 64 65 66  ch would.  # def
2de0: 65 61 74 20 74 68 65 20 70 6f 69 6e 74 20 6f 66  eat the point of
2df0: 20 74 68 65 20 74 65 73 74 2e 0a 20 20 63 6f 75   the test..  cou
2e00: 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 53  nt_steps {.    S
2e10: 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 31 0a  ELECT a FROM t1.
2e20: 20 20 20 20 20 57 48 45 52 45 20 61 3d 38 33 0a       WHERE a=83.
2e30: 20 20 20 20 20 20 20 20 4f 52 20 62 3d 39 31 33          OR b=913
2e40: 0a 20 20 20 20 20 20 20 20 4f 52 20 63 3d 32 38  .        OR c=28
2e50: 30 32 38 0a 20 20 20 20 20 20 20 20 4f 52 20 28  028.        OR (
2e60: 64 3e 3d 38 32 20 41 4e 44 20 64 3c 38 33 29 0a  d>=82 AND d<83).
2e70: 2f 2a 20 20 20 20 20 20 4f 52 20 28 65 3e 32 38  /*      OR (e>28
2e80: 30 32 20 41 4e 44 20 65 3c 32 38 30 33 29 20 20  02 AND e<2803)  
2e90: 2a 2f 0a 20 20 20 20 20 20 20 20 4f 52 20 66 3d  */.        OR f=
2ea0: 27 66 67 68 69 6a 6b 6c 6d 6e 27 0a 20 20 20 20  'fghijklmn'.    
2eb0: 20 20 20 20 4f 52 20 67 3d 27 68 67 66 65 64 63      OR g='hgfedc
2ec0: 62 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  b'.    ORDER BY 
2ed0: 61 0a 20 20 7d 0a 7d 20 7b 35 20 33 31 20 35 37  a.  }.} {5 31 57
2ee0: 20 38 32 20 38 33 20 38 34 20 38 35 20 38 36 20   82 83 84 85 86 
2ef0: 38 37 20 73 63 61 6e 20 30 20 73 6f 72 74 20 31  87 scan 0 sort 1
2f00: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39  }.do_test where9
2f10: 2d 31 2e 36 20 7b 0a 20 20 63 6f 75 6e 74 5f 73  -1.6 {.  count_s
2f20: 74 65 70 73 20 7b 0a 20 20 20 20 53 45 4c 45 43  teps {.    SELEC
2f30: 54 20 61 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  T a FROM t1.    
2f40: 20 57 48 45 52 45 20 62 3d 31 30 31 32 0a 20 20   WHERE b=1012.  
2f50: 20 20 20 20 20 20 4f 52 20 28 64 20 49 53 20 4e        OR (d IS N
2f60: 55 4c 4c 20 41 4e 44 20 65 20 49 53 20 4e 4f 54  ULL AND e IS NOT
2f70: 20 4e 55 4c 4c 29 0a 20 20 7d 0a 7d 20 7b 39 32   NULL).  }.} {92
2f80: 20 73 63 61 6e 20 30 20 73 6f 72 74 20 30 7d 0a   scan 0 sort 0}.
2f90: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d 31  do_test where9-1
2fa0: 2e 37 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65  .7 {.  count_ste
2fb0: 70 73 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ps {.    SELECT 
2fc0: 61 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 57  a FROM t1.     W
2fd0: 48 45 52 45 20 28 62 3d 31 30 31 32 20 4f 52 20  HERE (b=1012 OR 
2fe0: 28 64 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 65  (d IS NULL AND e
2ff0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 29 29 0a 20   IS NOT NULL)). 
3000: 20 20 20 20 20 20 41 4e 44 20 66 21 3d 67 0a 20        AND f!=g. 
3010: 20 7d 0a 7d 20 7b 39 32 20 73 63 61 6e 20 30 20   }.} {92 scan 0 
3020: 73 6f 72 74 20 30 7d 0a 64 6f 5f 74 65 73 74 20  sort 0}.do_test 
3030: 77 68 65 72 65 39 2d 31 2e 38 20 7b 0a 20 20 63  where9-1.8 {.  c
3040: 6f 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20  ount_steps {.   
3050: 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74   SELECT a FROM t
3060: 31 0a 20 20 20 20 20 57 48 45 52 45 20 28 62 3d  1.     WHERE (b=
3070: 31 30 31 32 20 4f 52 20 28 64 20 49 53 20 4e 55  1012 OR (d IS NU
3080: 4c 4c 20 41 4e 44 20 65 20 49 53 20 4e 4f 54 20  LL AND e IS NOT 
3090: 4e 55 4c 4c 29 29 0a 20 20 20 20 20 20 20 41 4e  NULL)).       AN
30a0: 44 20 66 3d 3d 67 0a 20 20 7d 0a 7d 20 7b 73 63  D f==g.  }.} {sc
30b0: 61 6e 20 30 20 73 6f 72 74 20 30 7d 0a 0a 64 6f  an 0 sort 0}..do
30c0: 5f 74 65 73 74 20 77 68 65 72 65 39 2d 32 2e 31  _test where9-2.1
30d0: 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70 73   {.  count_steps
30e0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74 32   {.    SELECT t2
30f0: 2e 61 20 46 52 4f 4d 20 74 31 2c 20 74 32 0a 20  .a FROM t1, t2. 
3100: 20 20 20 20 57 48 45 52 45 20 74 31 2e 61 3d 38      WHERE t1.a=8
3110: 30 0a 20 20 20 20 20 20 20 41 4e 44 20 28 74 31  0.       AND (t1
3120: 2e 63 3d 74 32 2e 63 20 4f 52 20 74 31 2e 64 3d  .c=t2.c OR t1.d=
3130: 74 32 2e 64 29 0a 20 20 20 20 4f 52 44 45 52 20  t2.d).    ORDER 
3140: 42 59 20 31 0a 20 20 7d 0a 7d 20 7b 37 39 20 38  BY 1.  }.} {79 8
3150: 30 20 38 31 20 73 63 61 6e 20 30 20 73 6f 72 74  0 81 scan 0 sort
3160: 20 31 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   1}.do_test wher
3170: 65 39 2d 32 2e 32 20 7b 0a 20 20 63 6f 75 6e 74  e9-2.2 {.  count
3180: 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 53 45 4c  _steps {.    SEL
3190: 45 43 54 20 74 32 2e 61 20 46 52 4f 4d 20 74 31  ECT t2.a FROM t1
31a0: 2c 20 74 32 0a 20 20 20 20 20 57 48 45 52 45 20  , t2.     WHERE 
31b0: 74 31 2e 61 3d 38 30 0a 20 20 20 20 20 20 20 41  t1.a=80.       A
31c0: 4e 44 20 28 28 74 31 2e 63 3d 74 32 2e 63 20 41  ND ((t1.c=t2.c A
31d0: 4e 44 20 74 31 2e 64 3d 74 32 2e 64 29 20 4f 52  ND t1.d=t2.d) OR
31e0: 20 74 31 2e 66 3d 74 32 2e 66 29 0a 20 20 20 20   t1.f=t2.f).    
31f0: 4f 52 44 45 52 20 42 59 20 31 0a 20 20 7d 0a 7d  ORDER BY 1.  }.}
3200: 20 7b 32 20 32 38 20 35 34 20 38 30 20 73 63 61   {2 28 54 80 sca
3210: 6e 20 30 20 73 6f 72 74 20 31 7d 0a 64 6f 5f 74  n 0 sort 1}.do_t
3220: 65 73 74 20 77 68 65 72 65 39 2d 32 2e 33 20 7b  est where9-2.3 {
3230: 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70 73 20 7b  .  count_steps {
3240: 0a 20 20 20 20 53 45 4c 45 43 54 20 63 6f 61 6c  .    SELECT coal
3250: 65 73 63 65 28 74 32 2e 61 2c 39 39 39 39 29 0a  esce(t2.a,9999).
3260: 20 20 20 20 20 20 46 52 4f 4d 20 74 31 20 4c 45        FROM t1 LE
3270: 46 54 20 4a 4f 49 4e 20 74 32 20 4f 4e 20 28 74  FT JOIN t2 ON (t
3280: 31 2e 63 3d 74 32 2e 63 20 41 4e 44 20 74 31 2e  1.c=t2.c AND t1.
3290: 64 3d 74 32 2e 64 29 20 4f 52 20 74 31 2e 66 3d  d=t2.d) OR t1.f=
32a0: 74 32 2e 66 0a 20 20 20 20 20 57 48 45 52 45 20  t2.f.     WHERE 
32b0: 74 31 2e 61 3d 38 30 0a 20 20 20 20 4f 52 44 45  t1.a=80.    ORDE
32c0: 52 20 42 59 20 31 0a 20 20 7d 0a 7d 20 7b 32 20  R BY 1.  }.} {2 
32d0: 32 38 20 35 34 20 38 30 20 73 63 61 6e 20 30 20  28 54 80 scan 0 
32e0: 73 6f 72 74 20 31 7d 0a 64 6f 5f 74 65 73 74 20  sort 1}.do_test 
32f0: 77 68 65 72 65 39 2d 32 2e 34 20 7b 0a 20 20 63  where9-2.4 {.  c
3300: 6f 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20  ount_steps {.   
3310: 20 53 45 4c 45 43 54 20 63 6f 61 6c 65 73 63 65   SELECT coalesce
3320: 28 74 32 2e 61 2c 39 39 39 39 29 0a 20 20 20 20  (t2.a,9999).    
3330: 20 20 46 52 4f 4d 20 74 31 20 4c 45 46 54 20 4a    FROM t1 LEFT J
3340: 4f 49 4e 20 74 32 20 4f 4e 20 28 74 31 2e 63 2b  OIN t2 ON (t1.c+
3350: 31 3d 74 32 2e 63 20 41 4e 44 20 74 31 2e 64 3d  1=t2.c AND t1.d=
3360: 74 32 2e 64 29 20 4f 52 20 28 74 31 2e 66 7c 7c  t2.d) OR (t1.f||
3370: 27 78 27 29 3d 74 32 2e 66 0a 20 20 20 20 20 57  'x')=t2.f.     W
3380: 48 45 52 45 20 74 31 2e 61 3d 38 30 0a 20 20 20  HERE t1.a=80.   
3390: 20 4f 52 44 45 52 20 42 59 20 31 0a 20 20 7d 0a   ORDER BY 1.  }.
33a0: 7d 20 7b 39 39 39 39 20 73 63 61 6e 20 30 20 73  } {9999 scan 0 s
33b0: 6f 72 74 20 31 7d 0a 64 6f 5f 74 65 73 74 20 77  ort 1}.do_test w
33c0: 68 65 72 65 39 2d 32 2e 35 20 7b 0a 20 20 63 6f  here9-2.5 {.  co
33d0: 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20  unt_steps {.    
33e0: 53 45 4c 45 43 54 20 74 31 2e 61 2c 20 63 6f 61  SELECT t1.a, coa
33f0: 6c 65 73 63 65 28 74 32 2e 61 2c 39 39 39 39 29  lesce(t2.a,9999)
3400: 0a 20 20 20 20 20 20 46 52 4f 4d 20 74 31 20 4c  .      FROM t1 L
3410: 45 46 54 20 4a 4f 49 4e 20 74 32 20 4f 4e 20 28  EFT JOIN t2 ON (
3420: 74 31 2e 63 3d 74 32 2e 63 20 41 4e 44 20 74 31  t1.c=t2.c AND t1
3430: 2e 64 3d 74 32 2e 64 29 20 4f 52 20 28 74 31 2e  .d=t2.d) OR (t1.
3440: 66 29 3d 74 32 2e 66 0a 20 20 20 20 20 57 48 45  f)=t2.f.     WHE
3450: 52 45 20 74 31 2e 61 3d 38 30 20 4f 52 20 74 31  RE t1.a=80 OR t1
3460: 2e 62 3d 38 38 30 20 4f 52 20 28 74 31 2e 63 3d  .b=880 OR (t1.c=
3470: 32 37 30 32 37 20 41 4e 44 20 72 6f 75 6e 64 28  27027 AND round(
3480: 74 31 2e 64 29 3d 3d 38 30 29 0a 20 20 20 20 4f  t1.d)==80).    O
3490: 52 44 45 52 20 42 59 20 31 0a 20 20 7d 0a 7d 20  RDER BY 1.  }.} 
34a0: 7b 38 30 20 38 30 20 38 30 20 32 20 38 30 20 32  {80 80 80 2 80 2
34b0: 38 20 38 30 20 35 34 20 73 63 61 6e 20 30 20 73  8 80 54 scan 0 s
34c0: 6f 72 74 20 31 7d 0a 64 6f 5f 74 65 73 74 20 77  ort 1}.do_test w
34d0: 68 65 72 65 39 2d 32 2e 36 20 7b 0a 20 20 63 6f  here9-2.6 {.  co
34e0: 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20  unt_steps {.    
34f0: 53 45 4c 45 43 54 20 74 31 2e 61 2c 20 63 6f 61  SELECT t1.a, coa
3500: 6c 65 73 63 65 28 74 32 2e 61 2c 39 39 39 39 29  lesce(t2.a,9999)
3510: 0a 20 20 20 20 20 20 46 52 4f 4d 20 74 31 20 4c  .      FROM t1 L
3520: 45 46 54 20 4a 4f 49 4e 20 74 32 20 4f 4e 20 28  EFT JOIN t2 ON (
3530: 74 31 2e 63 2b 31 3d 74 32 2e 63 20 41 4e 44 20  t1.c+1=t2.c AND 
3540: 74 31 2e 64 3d 74 32 2e 64 29 20 4f 52 20 28 74  t1.d=t2.d) OR (t
3550: 31 2e 66 7c 7c 27 78 27 29 3d 74 32 2e 66 0a 20  1.f||'x')=t2.f. 
3560: 20 20 20 20 57 48 45 52 45 20 74 31 2e 61 3d 38      WHERE t1.a=8
3570: 30 20 4f 52 20 74 31 2e 62 3d 38 38 30 20 4f 52  0 OR t1.b=880 OR
3580: 20 28 74 31 2e 63 3d 32 37 30 32 37 20 41 4e 44   (t1.c=27027 AND
3590: 20 72 6f 75 6e 64 28 74 31 2e 64 29 3d 3d 38 30   round(t1.d)==80
35a0: 29 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 31  ).    ORDER BY 1
35b0: 0a 20 20 7d 0a 7d 20 7b 38 30 20 39 39 39 39 20  .  }.} {80 9999 
35c0: 73 63 61 6e 20 30 20 73 6f 72 74 20 31 7d 0a 64  scan 0 sort 1}.d
35d0: 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d 32 2e  o_test where9-2.
35e0: 37 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70  7 {.  count_step
35f0: 73 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 74  s {.    SELECT t
3600: 33 2e 78 2c 20 74 31 2e 61 2c 20 63 6f 61 6c 65  3.x, t1.a, coale
3610: 73 63 65 28 74 32 2e 61 2c 39 39 39 39 29 0a 20  sce(t2.a,9999). 
3620: 20 20 20 20 20 46 52 4f 4d 20 74 33 20 4a 4f 49       FROM t3 JOI
3630: 4e 0a 20 20 20 20 20 20 20 20 20 20 20 74 31 20  N.           t1 
3640: 4c 45 46 54 20 4a 4f 49 4e 20 74 32 20 4f 4e 20  LEFT JOIN t2 ON 
3650: 28 74 31 2e 63 2b 31 3d 74 32 2e 63 20 41 4e 44  (t1.c+1=t2.c AND
3660: 20 74 31 2e 64 3d 74 32 2e 64 29 20 4f 52 20 28   t1.d=t2.d) OR (
3670: 74 31 2e 66 7c 7c 27 78 27 29 3d 74 32 2e 66 0a  t1.f||'x')=t2.f.
3680: 20 20 20 20 20 57 48 45 52 45 20 74 31 2e 61 3d       WHERE t1.a=
3690: 74 33 2e 79 20 4f 52 20 74 31 2e 62 3d 74 33 2e  t3.y OR t1.b=t3.
36a0: 79 2a 31 31 20 4f 52 20 28 74 31 2e 63 3d 32 37  y*11 OR (t1.c=27
36b0: 30 32 37 20 41 4e 44 20 72 6f 75 6e 64 28 74 31  027 AND round(t1
36c0: 2e 64 29 3d 3d 38 30 29 0a 20 20 20 20 4f 52 44  .d)==80).    ORD
36d0: 45 52 20 42 59 20 31 2c 20 32 0a 20 20 7d 0a 7d  ER BY 1, 2.  }.}
36e0: 20 7b 31 20 38 30 20 39 39 39 39 20 32 20 38 30   {1 80 9999 2 80
36f0: 20 39 39 39 39 20 73 63 61 6e 20 31 20 73 6f 72   9999 scan 1 sor
3700: 74 20 31 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  t 1}.do_test whe
3710: 72 65 39 2d 32 2e 38 20 7b 0a 20 20 63 6f 75 6e  re9-2.8 {.  coun
3720: 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 53 45  t_steps {.    SE
3730: 4c 45 43 54 20 74 33 2e 78 2c 20 74 31 2e 61 2c  LECT t3.x, t1.a,
3740: 20 63 6f 61 6c 65 73 63 65 28 74 32 2e 61 2c 39   coalesce(t2.a,9
3750: 39 39 39 29 0a 20 20 20 20 20 20 46 52 4f 4d 20  999).      FROM 
3760: 74 33 20 4a 4f 49 4e 0a 20 20 20 20 20 20 20 20  t3 JOIN.        
3770: 20 20 20 74 31 20 4c 45 46 54 20 4a 4f 49 4e 20     t1 LEFT JOIN 
3780: 74 32 20 4f 4e 20 28 74 31 2e 63 3d 74 32 2e 63  t2 ON (t1.c=t2.c
3790: 20 41 4e 44 20 74 31 2e 64 3d 74 32 2e 64 29 20   AND t1.d=t2.d) 
37a0: 4f 52 20 28 74 31 2e 66 29 3d 74 32 2e 66 0a 20  OR (t1.f)=t2.f. 
37b0: 20 20 20 20 57 48 45 52 45 20 74 31 2e 61 3d 74      WHERE t1.a=t
37c0: 33 2e 79 20 4f 52 20 74 31 2e 62 3d 74 33 2e 79  3.y OR t1.b=t3.y
37d0: 2a 31 31 20 4f 52 20 28 74 31 2e 63 3d 32 37 30  *11 OR (t1.c=270
37e0: 32 37 20 41 4e 44 20 72 6f 75 6e 64 28 74 31 2e  27 AND round(t1.
37f0: 64 29 3d 3d 38 30 29 0a 20 20 20 20 4f 52 44 45  d)==80).    ORDE
3800: 52 20 42 59 20 31 2c 20 32 2c 20 33 0a 20 20 7d  R BY 1, 2, 3.  }
3810: 0a 7d 20 7b 31 20 38 30 20 32 20 31 20 38 30 20  .} {1 80 2 1 80 
3820: 32 38 20 31 20 38 30 20 35 34 20 31 20 38 30 20  28 1 80 54 1 80 
3830: 38 30 20 32 20 38 30 20 32 20 32 20 38 30 20 32  80 2 80 2 2 80 2
3840: 38 20 32 20 38 30 20 35 34 20 32 20 38 30 20 38  8 2 80 54 2 80 8
3850: 30 20 73 63 61 6e 20 31 20 73 6f 72 74 20 31 7d  0 scan 1 sort 1}
3860: 0a 0a 0a 69 66 63 61 70 61 62 6c 65 20 65 78 70  ...ifcapable exp
3870: 6c 61 69 6e 20 7b 0a 20 20 64 6f 5f 65 78 65 63  lain {.  do_exec
3880: 73 71 6c 5f 74 65 73 74 20 77 68 65 72 65 39 2d  sql_test where9-
3890: 33 2e 31 20 7b 0a 20 20 20 20 45 58 50 4c 41 49  3.1 {.    EXPLAI
38a0: 4e 20 51 55 45 52 59 20 50 4c 41 4e 0a 20 20 20  N QUERY PLAN.   
38b0: 20 53 45 4c 45 43 54 20 74 32 2e 61 20 46 52 4f   SELECT t2.a FRO
38c0: 4d 20 74 31 2c 20 74 32 0a 20 20 20 20 57 48 45  M t1, t2.    WHE
38d0: 52 45 20 74 31 2e 61 3d 38 30 20 41 4e 44 20 28  RE t1.a=80 AND (
38e0: 28 74 31 2e 63 3d 74 32 2e 63 20 41 4e 44 20 74  (t1.c=t2.c AND t
38f0: 31 2e 64 3d 74 32 2e 64 29 20 4f 52 20 74 31 2e  1.d=t2.d) OR t1.
3900: 66 3d 74 32 2e 66 29 0a 20 20 7d 20 7b 0a 20 20  f=t2.f).  } {.  
3910: 20 20 30 20 30 20 30 20 7b 53 45 41 52 43 48 20    0 0 0 {SEARCH 
3920: 54 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20 49  TABLE t1 USING I
3930: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
3940: 45 59 20 28 72 6f 77 69 64 3d 3f 29 20 28 7e 31  EY (rowid=?) (~1
3950: 20 72 6f 77 73 29 7d 20 0a 20 20 20 20 30 20 31   rows)} .    0 1
3960: 20 31 20 7b 53 45 41 52 43 48 20 54 41 42 4c 45   1 {SEARCH TABLE
3970: 20 74 32 20 55 53 49 4e 47 20 49 4e 44 45 58 20   t2 USING INDEX 
3980: 74 32 64 20 28 64 3d 3f 29 20 28 7e 32 20 72 6f  t2d (d=?) (~2 ro
3990: 77 73 29 7d 20 0a 20 20 20 20 30 20 31 20 31 20  ws)} .    0 1 1 
39a0: 7b 53 45 41 52 43 48 20 54 41 42 4c 45 20 74 32  {SEARCH TABLE t2
39b0: 20 55 53 49 4e 47 20 43 4f 56 45 52 49 4e 47 20   USING COVERING 
39c0: 49 4e 44 45 58 20 74 32 66 20 28 66 3d 3f 29 20  INDEX t2f (f=?) 
39d0: 28 7e 31 30 20 72 6f 77 73 29 7d 0a 20 20 7d 0a  (~10 rows)}.  }.
39e0: 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73    do_execsql_tes
39f0: 74 20 77 68 65 72 65 39 2d 33 2e 32 20 7b 0a 20  t where9-3.2 {. 
3a00: 20 20 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59     EXPLAIN QUERY
3a10: 20 50 4c 41 4e 0a 20 20 20 20 53 45 4c 45 43 54   PLAN.    SELECT
3a20: 20 63 6f 61 6c 65 73 63 65 28 74 32 2e 61 2c 39   coalesce(t2.a,9
3a30: 39 39 39 29 0a 20 20 20 20 46 52 4f 4d 20 74 31  999).    FROM t1
3a40: 20 4c 45 46 54 20 4a 4f 49 4e 20 74 32 20 4f 4e   LEFT JOIN t2 ON
3a50: 20 28 74 31 2e 63 2b 31 3d 74 32 2e 63 20 41 4e   (t1.c+1=t2.c AN
3a60: 44 20 74 31 2e 64 3d 74 32 2e 64 29 20 4f 52 20  D t1.d=t2.d) OR 
3a70: 28 74 31 2e 66 7c 7c 27 78 27 29 3d 74 32 2e 66  (t1.f||'x')=t2.f
3a80: 0a 20 20 20 20 57 48 45 52 45 20 74 31 2e 61 3d  .    WHERE t1.a=
3a90: 38 30 0a 20 20 7d 20 7b 0a 20 20 20 20 30 20 30  80.  } {.    0 0
3aa0: 20 30 20 7b 53 45 41 52 43 48 20 54 41 42 4c 45   0 {SEARCH TABLE
3ab0: 20 74 31 20 55 53 49 4e 47 20 49 4e 54 45 47 45   t1 USING INTEGE
3ac0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 28 72  R PRIMARY KEY (r
3ad0: 6f 77 69 64 3d 3f 29 20 28 7e 31 20 72 6f 77 73  owid=?) (~1 rows
3ae0: 29 7d 20 0a 20 20 20 20 30 20 31 20 31 20 7b 53  )} .    0 1 1 {S
3af0: 45 41 52 43 48 20 54 41 42 4c 45 20 74 32 20 55  EARCH TABLE t2 U
3b00: 53 49 4e 47 20 49 4e 44 45 58 20 74 32 64 20 28  SING INDEX t2d (
3b10: 64 3d 3f 29 20 28 7e 32 20 72 6f 77 73 29 7d 20  d=?) (~2 rows)} 
3b20: 0a 20 20 20 20 30 20 31 20 31 20 7b 53 45 41 52  .    0 1 1 {SEAR
3b30: 43 48 20 54 41 42 4c 45 20 74 32 20 55 53 49 4e  CH TABLE t2 USIN
3b40: 47 20 43 4f 56 45 52 49 4e 47 20 49 4e 44 45 58  G COVERING INDEX
3b50: 20 74 32 66 20 28 66 3d 3f 29 20 28 7e 31 30 20   t2f (f=?) (~10 
3b60: 72 6f 77 73 29 7d 0a 20 20 7d 0a 7d 20 0a 0a 23  rows)}.  }.} ..#
3b70: 20 4d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20   Make sure that 
3b80: 49 4e 44 45 58 45 44 20 42 59 20 61 6e 64 20 6d  INDEXED BY and m
3b90: 75 6c 74 69 2d 69 6e 64 65 78 20 4f 52 20 63 6c  ulti-index OR cl
3ba0: 61 75 73 65 73 20 70 6c 61 79 20 77 65 6c 6c 20  auses play well 
3bb0: 77 69 74 68 0a 23 20 6f 6e 65 20 61 6e 6f 74 68  with.# one anoth
3bc0: 65 72 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 77 68  er..#.do_test wh
3bd0: 65 72 65 39 2d 34 2e 31 20 7b 0a 20 20 63 6f 75  ere9-4.1 {.  cou
3be0: 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 53  nt_steps {.    S
3bf0: 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 31 0a  ELECT a FROM t1.
3c00: 20 20 20 20 20 57 48 45 52 45 20 62 3e 31 30 30       WHERE b>100
3c10: 30 0a 20 20 20 20 20 20 20 41 4e 44 20 28 63 3d  0.       AND (c=
3c20: 33 31 30 33 31 20 4f 52 20 64 20 49 53 20 4e 55  31031 OR d IS NU
3c30: 4c 4c 29 0a 20 20 20 20 20 4f 52 44 45 52 20 42  LL).     ORDER B
3c40: 59 20 2b 61 0a 20 20 7d 0a 7d 20 7b 39 32 20 39  Y +a.  }.} {92 9
3c50: 33 20 39 37 20 73 63 61 6e 20 30 20 73 6f 72 74  3 97 scan 0 sort
3c60: 20 31 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   1}.do_test wher
3c70: 65 39 2d 34 2e 32 20 7b 0a 20 20 63 6f 75 6e 74  e9-4.2 {.  count
3c80: 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 53 45 4c  _steps {.    SEL
3c90: 45 43 54 20 61 20 46 52 4f 4d 20 74 31 0a 20 20  ECT a FROM t1.  
3ca0: 20 20 20 57 48 45 52 45 20 62 3e 31 30 30 30 0a     WHERE b>1000.
3cb0: 20 20 20 20 20 20 20 41 4e 44 20 28 63 3d 33 31         AND (c=31
3cc0: 30 33 31 20 4f 52 20 2b 64 20 49 53 20 4e 55 4c  031 OR +d IS NUL
3cd0: 4c 29 0a 20 20 20 20 20 4f 52 44 45 52 20 42 59  L).     ORDER BY
3ce0: 20 2b 61 0a 20 20 7d 0a 7d 20 7b 39 32 20 39 33   +a.  }.} {92 93
3cf0: 20 39 37 20 73 63 61 6e 20 30 20 73 6f 72 74 20   97 scan 0 sort 
3d00: 31 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  1}.do_test where
3d10: 39 2d 34 2e 33 20 7b 0a 20 20 63 6f 75 6e 74 5f  9-4.3 {.  count_
3d20: 73 74 65 70 73 20 7b 0a 20 20 20 20 53 45 4c 45  steps {.    SELE
3d30: 43 54 20 61 20 46 52 4f 4d 20 74 31 0a 20 20 20  CT a FROM t1.   
3d40: 20 20 57 48 45 52 45 20 2b 62 3e 31 30 30 30 0a    WHERE +b>1000.
3d50: 20 20 20 20 20 20 20 41 4e 44 20 28 63 3d 33 31         AND (c=31
3d60: 30 33 31 20 4f 52 20 64 20 49 53 20 4e 55 4c 4c  031 OR d IS NULL
3d70: 29 0a 20 20 20 20 20 4f 52 44 45 52 20 42 59 20  ).     ORDER BY 
3d80: 2b 61 0a 20 20 7d 0a 7d 20 7b 39 32 20 39 33 20  +a.  }.} {92 93 
3d90: 39 37 20 73 63 61 6e 20 30 20 73 6f 72 74 20 31  97 scan 0 sort 1
3da0: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39  }.do_test where9
3db0: 2d 34 2e 34 20 7b 0a 20 20 63 6f 75 6e 74 5f 73  -4.4 {.  count_s
3dc0: 74 65 70 73 20 7b 0a 20 20 20 20 53 45 4c 45 43  teps {.    SELEC
3dd0: 54 20 61 20 46 52 4f 4d 20 74 31 20 49 4e 44 45  T a FROM t1 INDE
3de0: 58 45 44 20 42 59 20 74 31 62 0a 20 20 20 20 20  XED BY t1b.     
3df0: 57 48 45 52 45 20 62 3e 31 30 30 30 0a 20 20 20  WHERE b>1000.   
3e00: 20 20 20 20 41 4e 44 20 28 63 3d 33 31 30 33 31      AND (c=31031
3e10: 20 4f 52 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20   OR d IS NULL). 
3e20: 20 20 20 20 4f 52 44 45 52 20 42 59 20 2b 61 0a      ORDER BY +a.
3e30: 20 20 7d 0a 7d 20 7b 39 32 20 39 33 20 39 37 20    }.} {92 93 97 
3e40: 73 63 61 6e 20 30 20 73 6f 72 74 20 31 7d 0a 64  scan 0 sort 1}.d
3e50: 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d 34 2e  o_test where9-4.
3e60: 35 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b  5 {.  catchsql {
3e70: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 20 46 52  .    SELECT a FR
3e80: 4f 4d 20 74 31 20 49 4e 44 45 58 45 44 20 42 59  OM t1 INDEXED BY
3e90: 20 74 31 62 0a 20 20 20 20 20 57 48 45 52 45 20   t1b.     WHERE 
3ea0: 2b 62 3e 31 30 30 30 0a 20 20 20 20 20 20 20 41  +b>1000.       A
3eb0: 4e 44 20 28 63 3d 33 31 30 33 31 20 4f 52 20 64  ND (c=31031 OR d
3ec0: 20 49 53 20 4e 55 4c 4c 29 0a 20 20 20 20 20 4f   IS NULL).     O
3ed0: 52 44 45 52 20 42 59 20 2b 61 0a 20 20 7d 0a 7d  RDER BY +a.  }.}
3ee0: 20 7b 31 20 7b 63 61 6e 6e 6f 74 20 75 73 65 20   {1 {cannot use 
3ef0: 69 6e 64 65 78 3a 20 74 31 62 7d 7d 0a 64 6f 5f  index: t1b}}.do_
3f00: 74 65 73 74 20 77 68 65 72 65 39 2d 34 2e 36 20  test where9-4.6 
3f10: 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70 73 20  {.  count_steps 
3f20: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 20 46  {.    SELECT a F
3f30: 52 4f 4d 20 74 31 20 4e 4f 54 20 49 4e 44 45 58  ROM t1 NOT INDEX
3f40: 45 44 0a 20 20 20 20 20 57 48 45 52 45 20 62 3e  ED.     WHERE b>
3f50: 31 30 30 30 0a 20 20 20 20 20 20 20 41 4e 44 20  1000.       AND 
3f60: 28 63 3d 33 31 30 33 31 20 4f 52 20 64 20 49 53  (c=31031 OR d IS
3f70: 20 4e 55 4c 4c 29 0a 20 20 20 20 20 4f 52 44 45   NULL).     ORDE
3f80: 52 20 42 59 20 2b 61 0a 20 20 7d 0a 7d 20 7b 39  R BY +a.  }.} {9
3f90: 32 20 39 33 20 39 37 20 73 63 61 6e 20 39 38 20  2 93 97 scan 98 
3fa0: 73 6f 72 74 20 31 7d 0a 64 6f 5f 74 65 73 74 20  sort 1}.do_test 
3fb0: 77 68 65 72 65 39 2d 34 2e 37 20 7b 0a 20 20 63  where9-4.7 {.  c
3fc0: 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 53 45  atchsql {.    SE
3fd0: 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 31 20 49  LECT a FROM t1 I
3fe0: 4e 44 45 58 45 44 20 42 59 20 74 31 63 0a 20 20  NDEXED BY t1c.  
3ff0: 20 20 20 57 48 45 52 45 20 62 3e 31 30 30 30 0a     WHERE b>1000.
4000: 20 20 20 20 20 20 20 41 4e 44 20 28 63 3d 33 31         AND (c=31
4010: 30 33 31 20 4f 52 20 64 20 49 53 20 4e 55 4c 4c  031 OR d IS NULL
4020: 29 0a 20 20 20 20 20 4f 52 44 45 52 20 42 59 20  ).     ORDER BY 
4030: 2b 61 0a 20 20 7d 0a 7d 20 7b 31 20 7b 63 61 6e  +a.  }.} {1 {can
4040: 6e 6f 74 20 75 73 65 20 69 6e 64 65 78 3a 20 74  not use index: t
4050: 31 63 7d 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65  1c}}.do_test whe
4060: 72 65 39 2d 34 2e 38 20 7b 0a 20 20 63 61 74 63  re9-4.8 {.  catc
4070: 68 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  hsql {.    SELEC
4080: 54 20 61 20 46 52 4f 4d 20 74 31 20 49 4e 44 45  T a FROM t1 INDE
4090: 58 45 44 20 42 59 20 74 31 64 0a 20 20 20 20 20  XED BY t1d.     
40a0: 57 48 45 52 45 20 62 3e 31 30 30 30 0a 20 20 20  WHERE b>1000.   
40b0: 20 20 20 20 41 4e 44 20 28 63 3d 33 31 30 33 31      AND (c=31031
40c0: 20 4f 52 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20   OR d IS NULL). 
40d0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 2b 61 0a      ORDER BY +a.
40e0: 20 20 7d 0a 7d 20 7b 31 20 7b 63 61 6e 6e 6f 74    }.} {1 {cannot
40f0: 20 75 73 65 20 69 6e 64 65 78 3a 20 74 31 64 7d   use index: t1d}
4100: 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20 65 78 70  }..ifcapable exp
4110: 6c 61 69 6e 20 7b 0a 20 20 23 20 54 68 65 20 28  lain {.  # The (
4120: 63 3d 33 31 30 33 31 20 4f 52 20 64 20 49 53 20  c=31031 OR d IS 
4130: 4e 55 4c 4c 29 20 63 6c 61 75 73 65 20 69 73 20  NULL) clause is 
4140: 70 72 65 66 65 72 72 65 64 20 6f 76 65 72 20 62  preferred over b
4150: 3e 31 30 30 30 20 62 65 63 61 75 73 65 0a 20 20  >1000 because.  
4160: 23 20 74 68 65 20 66 6f 72 6d 65 72 20 69 73 20  # the former is 
4170: 61 6e 20 65 71 75 61 6c 69 74 79 20 74 65 73 74  an equality test
4180: 20 77 68 69 63 68 20 69 73 20 65 78 70 65 63 74   which is expect
4190: 65 64 20 74 6f 20 72 65 74 75 72 6e 20 66 65 77  ed to return few
41a0: 65 72 20 72 6f 77 73 2e 0a 20 20 23 0a 20 20 64  er rows..  #.  d
41b0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 77  o_execsql_test w
41c0: 68 65 72 65 39 2d 35 2e 31 20 7b 0a 20 20 20 20  here9-5.1 {.    
41d0: 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c  EXPLAIN QUERY PL
41e0: 41 4e 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d  AN SELECT a FROM
41f0: 20 74 31 20 57 48 45 52 45 20 62 3e 31 30 30 30   t1 WHERE b>1000
4200: 20 41 4e 44 20 28 63 3d 33 31 30 33 31 20 4f 52   AND (c=31031 OR
4210: 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20 20 7d 20   d IS NULL).  } 
4220: 7b 0a 20 20 20 20 30 20 30 20 30 20 7b 53 45 41  {.    0 0 0 {SEA
4230: 52 43 48 20 54 41 42 4c 45 20 74 31 20 55 53 49  RCH TABLE t1 USI
4240: 4e 47 20 49 4e 44 45 58 20 74 31 63 20 28 63 3d  NG INDEX t1c (c=
4250: 3f 29 20 28 7e 31 30 20 72 6f 77 73 29 7d 20 0a  ?) (~10 rows)} .
4260: 20 20 20 20 30 20 30 20 30 20 7b 53 45 41 52 43      0 0 0 {SEARC
4270: 48 20 54 41 42 4c 45 20 74 31 20 55 53 49 4e 47  H TABLE t1 USING
4280: 20 49 4e 44 45 58 20 74 31 64 20 28 64 3d 3f 29   INDEX t1d (d=?)
4290: 20 28 7e 31 30 20 72 6f 77 73 29 7d 0a 20 20 7d   (~10 rows)}.  }
42a0: 0a 0a 20 20 23 20 49 6e 20 63 6f 6e 74 72 61 73  ..  # In contras
42b0: 74 2c 20 62 3d 31 30 30 30 20 69 73 20 70 72 65  t, b=1000 is pre
42c0: 66 65 72 72 65 64 20 6f 76 65 72 20 61 6e 79 20  ferred over any 
42d0: 4f 52 2d 63 6c 61 75 73 65 2e 0a 20 20 23 0a 20  OR-clause..  #. 
42e0: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
42f0: 20 77 68 65 72 65 39 2d 35 2e 32 20 7b 0a 20 20   where9-5.2 {.  
4300: 20 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20    EXPLAIN QUERY 
4310: 50 4c 41 4e 20 53 45 4c 45 43 54 20 61 20 46 52  PLAN SELECT a FR
4320: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3d 31 30  OM t1 WHERE b=10
4330: 30 30 20 41 4e 44 20 28 63 3d 33 31 30 33 31 20  00 AND (c=31031 
4340: 4f 52 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20 20  OR d IS NULL).  
4350: 7d 20 7b 0a 20 20 20 20 30 20 30 20 30 20 7b 53  } {.    0 0 0 {S
4360: 45 41 52 43 48 20 54 41 42 4c 45 20 74 31 20 55  EARCH TABLE t1 U
4370: 53 49 4e 47 20 49 4e 44 45 58 20 74 31 62 20 28  SING INDEX t1b (
4380: 62 3d 3f 29 20 28 7e 35 20 72 6f 77 73 29 7d 0a  b=?) (~5 rows)}.
4390: 20 20 7d 0a 0a 20 20 23 20 4c 69 6b 65 77 69 73    }..  # Likewis
43a0: 65 2c 20 69 6e 65 71 75 61 6c 69 74 69 65 73 20  e, inequalities 
43b0: 69 6e 20 61 6e 20 41 4e 44 20 61 72 65 20 70 72  in an AND are pr
43c0: 65 66 65 72 72 65 64 20 6f 76 65 72 20 69 6e 65  eferred over ine
43d0: 71 75 61 6c 69 74 69 65 73 20 69 6e 0a 20 20 23  qualities in.  #
43e0: 20 61 6e 20 4f 52 2e 0a 20 20 23 0a 20 20 64 6f   an OR..  #.  do
43f0: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 77 68  _execsql_test wh
4400: 65 72 65 39 2d 35 2e 33 20 7b 0a 20 20 20 20 45  ere9-5.3 {.    E
4410: 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41  XPLAIN QUERY PLA
4420: 4e 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20  N SELECT a FROM 
4430: 74 31 20 57 48 45 52 45 20 62 3e 31 30 30 30 20  t1 WHERE b>1000 
4440: 41 4e 44 20 28 63 3e 3d 33 31 30 33 31 20 4f 52  AND (c>=31031 OR
4450: 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20 20 7d 20   d IS NULL).  } 
4460: 7b 0a 20 20 20 20 30 20 30 20 30 20 7b 53 45 41  {.    0 0 0 {SEA
4470: 52 43 48 20 54 41 42 4c 45 20 74 31 20 55 53 49  RCH TABLE t1 USI
4480: 4e 47 20 49 4e 44 45 58 20 74 31 62 20 28 62 3e  NG INDEX t1b (b>
4490: 3f 29 20 28 7e 31 32 35 30 30 30 20 72 6f 77 73  ?) (~125000 rows
44a0: 29 7d 0a 20 20 7d 0a 7d 0a 0a 23 23 23 23 23 23  )}.  }.}..######
44b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
44f0: 23 23 23 23 23 23 0a 23 20 4d 61 6b 65 20 73 75  ######.# Make su
4500: 72 65 20 4f 52 2d 63 6c 61 75 73 65 73 20 77 6f  re OR-clauses wo
4510: 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20  rk correctly on 
4520: 55 50 44 41 54 45 20 61 6e 64 20 44 45 4c 45 54  UPDATE and DELET
4530: 45 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 0a 64  E statements...d
4540: 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d 36 2e  o_test where9-6.
4550: 32 2e 31 20 7b 0a 20 20 64 62 20 65 76 61 6c 20  2.1 {.  db eval 
4560: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
4570: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41   FROM t1 UNION A
4580: 4c 4c 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d  LL SELECT a FROM
4590: 20 74 31 20 57 48 45 52 45 20 61 3e 3d 38 35 7d   t1 WHERE a>=85}
45a0: 0a 7d 20 7b 39 39 20 38 35 20 38 36 20 38 37 20  .} {99 85 86 87 
45b0: 38 38 20 38 39 20 39 30 20 39 31 20 39 32 20 39  88 89 90 91 92 9
45c0: 33 20 39 34 20 39 35 20 39 36 20 39 37 20 39 38  3 94 95 96 97 98
45d0: 20 39 39 7d 0a 0a 64 6f 5f 74 65 73 74 20 77 68   99}..do_test wh
45e0: 65 72 65 39 2d 36 2e 32 2e 32 20 7b 20 20 20 3b  ere9-6.2.2 {   ;
45f0: 23 20 44 65 6c 65 74 65 73 20 65 6e 74 72 69 65  # Deletes entrie
4600: 73 20 39 30 20 39 31 20 39 32 20 39 36 20 39 37  s 90 91 92 96 97
4610: 20 39 39 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70   99.  count_step
4620: 73 20 7b 0a 20 20 20 20 20 42 45 47 49 4e 3b 0a  s {.     BEGIN;.
4630: 20 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d       DELETE FROM
4640: 20 74 31 0a 20 20 20 20 20 57 48 45 52 45 20 62   t1.     WHERE b
4650: 20 49 53 20 4e 55 4c 4c 0a 20 20 20 20 20 20 20   IS NULL.       
4660: 20 4f 52 20 63 20 49 53 20 4e 55 4c 4c 0a 20 20   OR c IS NULL.  
4670: 20 20 20 20 20 20 4f 52 20 64 20 49 53 20 4e 55        OR d IS NU
4680: 4c 4c 0a 20 20 7d 0a 7d 20 7b 73 63 61 6e 20 30  LL.  }.} {scan 0
4690: 20 73 6f 72 74 20 30 7d 0a 0a 64 6f 5f 74 65 73   sort 0}..do_tes
46a0: 74 20 77 68 65 72 65 39 2d 36 2e 32 2e 33 20 7b  t where9-6.2.3 {
46b0: 0a 20 20 64 62 20 65 76 61 6c 20 7b 0a 20 20 20  .  db eval {.   
46c0: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29   SELECT count(*)
46d0: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41   FROM t1 UNION A
46e0: 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20 61 20  LL.    SELECT a 
46f0: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3e  FROM t1 WHERE a>
4700: 3d 38 35 3b 0a 20 20 20 20 52 4f 4c 4c 42 41 43  =85;.    ROLLBAC
4710: 4b 3b 0a 20 20 7d 0a 7d 20 7b 39 33 20 38 35 20  K;.  }.} {93 85 
4720: 38 36 20 38 37 20 38 38 20 38 39 20 39 33 20 39  86 87 88 89 93 9
4730: 34 20 39 35 20 39 38 7d 0a 0a 64 6f 5f 74 65 73  4 95 98}..do_tes
4740: 74 20 77 68 65 72 65 39 2d 36 2e 32 2e 34 20 7b  t where9-6.2.4 {
4750: 20 20 20 3b 23 20 44 65 6c 65 74 65 73 20 65 6e     ;# Deletes en
4760: 74 72 69 65 73 20 39 30 20 39 31 20 39 32 20 39  tries 90 91 92 9
4770: 36 20 39 37 20 39 39 0a 20 20 63 6f 75 6e 74 5f  6 97 99.  count_
4780: 73 74 65 70 73 20 7b 0a 20 20 20 20 20 42 45 47  steps {.     BEG
4790: 49 4e 3b 0a 20 20 20 20 20 44 45 4c 45 54 45 20  IN;.     DELETE 
47a0: 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 57 48 45  FROM t1.     WHE
47b0: 52 45 20 2b 62 20 49 53 20 4e 55 4c 4c 0a 20 20  RE +b IS NULL.  
47c0: 20 20 20 20 20 20 4f 52 20 63 20 49 53 20 4e 55        OR c IS NU
47d0: 4c 4c 0a 20 20 20 20 20 20 20 20 4f 52 20 64 20  LL.        OR d 
47e0: 49 53 20 4e 55 4c 4c 0a 20 20 7d 0a 7d 20 7b 73  IS NULL.  }.} {s
47f0: 63 61 6e 20 39 38 20 73 6f 72 74 20 30 7d 0a 0a  can 98 sort 0}..
4800: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d 36  do_test where9-6
4810: 2e 32 2e 35 20 7b 0a 20 20 64 62 20 65 76 61 6c  .2.5 {.  db eval
4820: 20 7b 0a 20 20 20 20 20 53 45 4c 45 43 54 20 63   {.     SELECT c
4830: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 20  ount(*) FROM t1 
4840: 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20 20 20 20 53  UNION ALL.     S
4850: 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 31 20  ELECT a FROM t1 
4860: 57 48 45 52 45 20 61 3e 3d 38 35 3b 0a 20 20 20  WHERE a>=85;.   
4870: 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20 20 7d 0a    ROLLBACK;.  }.
4880: 7d 20 7b 39 33 20 38 35 20 38 36 20 38 37 20 38  } {93 85 86 87 8
4890: 38 20 38 39 20 39 33 20 39 34 20 39 35 20 39 38  8 89 93 94 95 98
48a0: 7d 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65  }..do_test where
48b0: 39 2d 36 2e 32 2e 36 20 7b 0a 20 20 63 6f 75 6e  9-6.2.6 {.  coun
48c0: 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 20 42  t_steps {.     B
48d0: 45 47 49 4e 3b 0a 20 20 20 20 20 55 50 44 41 54  EGIN;.     UPDAT
48e0: 45 20 74 31 20 53 45 54 20 61 3d 61 2b 31 30 30  E t1 SET a=a+100
48f0: 0a 20 20 20 20 20 57 48 45 52 45 20 28 62 20 49  .     WHERE (b I
4900: 53 20 4e 55 4c 4c 0a 20 20 20 20 20 20 20 20 20  S NULL.         
4910: 20 20 20 4f 52 20 63 20 49 53 20 4e 55 4c 4c 0a     OR c IS NULL.
4920: 20 20 20 20 20 20 20 20 20 20 20 20 4f 52 20 64              OR d
4930: 20 49 53 20 4e 55 4c 4c 29 0a 20 20 20 20 20 20   IS NULL).      
4940: 20 41 4e 44 20 61 21 3d 39 32 0a 20 20 20 20 20   AND a!=92.     
4950: 20 20 41 4e 44 20 61 21 3d 39 37 0a 20 20 7d 0a    AND a!=97.  }.
4960: 7d 20 7b 73 63 61 6e 20 30 20 73 6f 72 74 20 30  } {scan 0 sort 0
4970: 7d 20 20 20 3b 23 20 41 64 64 20 31 30 30 20 74  }   ;# Add 100 t
4980: 6f 20 65 6e 74 72 69 65 73 20 39 30 20 39 31 20  o entries 90 91 
4990: 39 36 20 39 39 0a 0a 64 6f 5f 74 65 73 74 20 77  96 99..do_test w
49a0: 68 65 72 65 39 2d 36 2e 32 2e 37 20 7b 0a 20 20  here9-6.2.7 {.  
49b0: 64 62 20 65 76 61 6c 20 7b 0a 20 20 20 20 20 53  db eval {.     S
49c0: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
49d0: 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c  ROM t1 UNION ALL
49e0: 0a 20 20 20 20 20 53 45 4c 45 43 54 20 61 20 46  .     SELECT a F
49f0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3e 3d  ROM t1 WHERE a>=
4a00: 38 35 3b 0a 20 20 20 20 20 52 4f 4c 4c 42 41 43  85;.     ROLLBAC
4a10: 4b 0a 20 20 7d 0a 7d 20 7b 39 39 20 38 35 20 38  K.  }.} {99 85 8
4a20: 36 20 38 37 20 38 38 20 38 39 20 39 32 20 39 33  6 87 88 89 92 93
4a30: 20 39 34 20 39 35 20 39 37 20 39 38 20 31 39 30   94 95 97 98 190
4a40: 20 31 39 31 20 31 39 36 20 31 39 39 7d 0a 0a 64   191 196 199}..d
4a50: 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d 36 2e  o_test where9-6.
4a60: 32 2e 38 20 7b 20 20 20 3b 23 20 44 65 6c 65 74  2.8 {   ;# Delet
4a70: 65 73 20 65 6e 74 72 69 65 73 20 39 30 20 39 31  es entries 90 91
4a80: 20 39 32 20 39 37 20 39 39 0a 20 20 63 6f 75 6e   92 97 99.  coun
4a90: 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 20 42  t_steps {.     B
4aa0: 45 47 49 4e 3b 0a 20 20 20 20 20 44 45 4c 45 54  EGIN;.     DELET
4ab0: 45 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 57  E FROM t1.     W
4ac0: 48 45 52 45 20 28 62 20 49 53 20 4e 55 4c 4c 0a  HERE (b IS NULL.
4ad0: 20 20 20 20 20 20 20 20 20 20 20 20 4f 52 20 63              OR c
4ae0: 20 49 53 20 4e 55 4c 4c 0a 20 20 20 20 20 20 20   IS NULL.       
4af0: 20 20 20 20 20 4f 52 20 64 20 49 53 20 4e 55 4c       OR d IS NUL
4b00: 4c 29 0a 20 20 20 20 20 20 20 41 4e 44 20 61 21  L).       AND a!
4b10: 3d 39 36 0a 20 20 7d 0a 7d 20 7b 73 63 61 6e 20  =96.  }.} {scan 
4b20: 30 20 73 6f 72 74 20 30 7d 0a 0a 64 6f 5f 74 65  0 sort 0}..do_te
4b30: 73 74 20 77 68 65 72 65 39 2d 36 2e 32 2e 39 20  st where9-6.2.9 
4b40: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 0a 20 20  {.  db eval {.  
4b50: 20 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28     SELECT count(
4b60: 2a 29 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e  *) FROM t1 UNION
4b70: 20 41 4c 4c 20 53 45 4c 45 43 54 20 61 20 46 52   ALL SELECT a FR
4b80: 4f 4d 20 74 31 20 57 48 45 52 45 20 61 3e 3d 38  OM t1 WHERE a>=8
4b90: 35 3b 0a 20 20 20 20 20 52 4f 4c 4c 42 41 43 4b  5;.     ROLLBACK
4ba0: 3b 0a 20 20 7d 0a 7d 20 7b 39 34 20 38 35 20 38  ;.  }.} {94 85 8
4bb0: 36 20 38 37 20 38 38 20 38 39 20 39 33 20 39 34  6 87 88 89 93 94
4bc0: 20 39 35 20 39 36 20 39 38 7d 0a 0a 64 6f 5f 74   95 96 98}..do_t
4bd0: 65 73 74 20 77 68 65 72 65 39 2d 36 2e 33 2e 31  est where9-6.3.1
4be0: 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70 73   {.  count_steps
4bf0: 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20   {.    BEGIN;.  
4c00: 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31    DELETE FROM t1
4c10: 0a 20 20 20 20 20 57 48 45 52 45 20 28 62 20 49  .     WHERE (b I
4c20: 53 20 4e 55 4c 4c 20 41 4e 44 20 63 20 4e 4f 54  S NULL AND c NOT
4c30: 20 4e 55 4c 4c 20 41 4e 44 20 64 20 4e 4f 54 20   NULL AND d NOT 
4c40: 4e 55 4c 4c 29 0a 20 20 20 20 20 20 20 20 4f 52  NULL).        OR
4c50: 20 28 62 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44   (b NOT NULL AND
4c60: 20 63 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 64   c IS NULL AND d
4c70: 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20 20 20 20   NOT NULL).     
4c80: 20 20 20 4f 52 20 28 62 20 4e 4f 54 20 4e 55 4c     OR (b NOT NUL
4c90: 4c 20 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c  L AND c NOT NULL
4ca0: 20 41 4e 44 20 64 20 49 53 20 4e 55 4c 4c 29 0a   AND d IS NULL).
4cb0: 20 20 7d 0a 7d 20 7b 73 63 61 6e 20 30 20 73 6f    }.} {scan 0 so
4cc0: 72 74 20 30 7d 20 20 20 3b 23 20 44 45 4c 45 54  rt 0}   ;# DELET
4cd0: 45 73 20 72 6f 77 73 20 39 30 20 39 31 20 39 32  Es rows 90 91 92
4ce0: 20 39 37 0a 64 6f 5f 74 65 73 74 20 77 68 65 72   97.do_test wher
4cf0: 65 39 2d 36 2e 33 2e 32 20 7b 0a 20 20 64 62 20  e9-6.3.2 {.  db 
4d00: 65 76 61 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  eval {.    SELEC
4d10: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
4d20: 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20 20  t1 UNION ALL.   
4d30: 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74   SELECT a FROM t
4d40: 31 20 57 48 45 52 45 20 61 20 42 45 54 57 45 45  1 WHERE a BETWEE
4d50: 4e 20 38 35 20 41 4e 44 20 31 30 30 3b 0a 20 20  N 85 AND 100;.  
4d60: 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20 20 7d 0a    ROLLBACK;.  }.
4d70: 7d 20 7b 39 35 20 38 35 20 38 36 20 38 37 20 38  } {95 85 86 87 8
4d80: 38 20 38 39 20 39 33 20 39 34 20 39 35 20 39 36  8 89 93 94 95 96
4d90: 20 39 38 20 39 39 7d 0a 0a 64 6f 5f 74 65 73 74   98 99}..do_test
4da0: 20 77 68 65 72 65 39 2d 36 2e 33 2e 33 20 7b 0a   where9-6.3.3 {.
4db0: 20 20 63 6f 75 6e 74 5f 73 74 65 70 73 20 7b 0a    count_steps {.
4dc0: 20 20 20 20 42 45 47 49 4e 3b 0a 20 20 20 20 55      BEGIN;.    U
4dd0: 50 44 41 54 45 20 74 31 20 53 45 54 20 61 3d 61  PDATE t1 SET a=a
4de0: 2b 31 30 30 0a 20 20 20 20 20 57 48 45 52 45 20  +100.     WHERE 
4df0: 28 62 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 63  (b IS NULL AND c
4e00: 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 64 20   NOT NULL AND d 
4e10: 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20 20 20 20 20  NOT NULL).      
4e20: 20 20 4f 52 20 28 62 20 4e 4f 54 20 4e 55 4c 4c    OR (b NOT NULL
4e30: 20 41 4e 44 20 63 20 49 53 20 4e 55 4c 4c 20 41   AND c IS NULL A
4e40: 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20  ND d NOT NULL). 
4e50: 20 20 20 20 20 20 20 4f 52 20 28 62 20 4e 4f 54         OR (b NOT
4e60: 20 4e 55 4c 4c 20 41 4e 44 20 63 20 4e 4f 54 20   NULL AND c NOT 
4e70: 4e 55 4c 4c 20 41 4e 44 20 64 20 49 53 20 4e 55  NULL AND d IS NU
4e80: 4c 4c 29 0a 20 20 7d 0a 7d 20 7b 73 63 61 6e 20  LL).  }.} {scan 
4e90: 30 20 73 6f 72 74 20 30 7d 20 20 20 3b 23 20 41  0 sort 0}   ;# A
4ea0: 64 64 20 31 30 30 20 74 6f 20 72 6f 77 69 64 73  dd 100 to rowids
4eb0: 20 39 30 20 39 31 20 39 32 20 39 37 0a 64 6f 5f   90 91 92 97.do_
4ec0: 74 65 73 74 20 77 68 65 72 65 39 2d 36 2e 33 2e  test where9-6.3.
4ed0: 34 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 0a  4 {.  db eval {.
4ee0: 20 20 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74      SELECT count
4ef0: 28 2a 29 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  (*) FROM t1 UNIO
4f00: 4e 20 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54  N ALL.    SELECT
4f10: 20 61 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45   a FROM t1 WHERE
4f20: 20 61 20 42 45 54 57 45 45 4e 20 38 35 20 41 4e   a BETWEEN 85 AN
4f30: 44 20 32 30 30 3b 0a 20 20 20 20 52 4f 4c 4c 42  D 200;.    ROLLB
4f40: 41 43 4b 3b 0a 20 20 7d 0a 7d 20 7b 39 39 20 38  ACK;.  }.} {99 8
4f50: 35 20 38 36 20 38 37 20 38 38 20 38 39 20 39 33  5 86 87 88 89 93
4f60: 20 39 34 20 39 35 20 39 36 20 39 38 20 39 39 20   94 95 96 98 99 
4f70: 31 39 30 20 31 39 31 20 31 39 32 20 31 39 37 7d  190 191 192 197}
4f80: 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39  ..do_test where9
4f90: 2d 36 2e 33 2e 35 20 7b 0a 20 20 63 6f 75 6e 74  -6.3.5 {.  count
4fa0: 5f 73 74 65 70 73 20 7b 0a 20 20 20 20 42 45 47  _steps {.    BEG
4fb0: 49 4e 3b 0a 20 20 20 20 44 45 4c 45 54 45 20 46  IN;.    DELETE F
4fc0: 52 4f 4d 20 74 31 0a 20 20 20 20 20 57 48 45 52  ROM t1.     WHER
4fd0: 45 20 28 2b 62 20 49 53 20 4e 55 4c 4c 20 41 4e  E (+b IS NULL AN
4fe0: 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44  D c NOT NULL AND
4ff0: 20 64 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20 20   d NOT NULL).   
5000: 20 20 20 20 20 4f 52 20 28 62 20 4e 4f 54 20 4e       OR (b NOT N
5010: 55 4c 4c 20 41 4e 44 20 63 20 49 53 20 4e 55 4c  ULL AND c IS NUL
5020: 4c 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c  L AND d NOT NULL
5030: 29 0a 20 20 20 20 20 20 20 20 4f 52 20 28 62 20  ).        OR (b 
5040: 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 63 20 4e  NOT NULL AND c N
5050: 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 64 20 49 53  OT NULL AND d IS
5060: 20 4e 55 4c 4c 29 0a 20 20 7d 0a 7d 20 7b 73 63   NULL).  }.} {sc
5070: 61 6e 20 39 38 20 73 6f 72 74 20 30 7d 20 20 20  an 98 sort 0}   
5080: 3b 23 20 44 45 4c 45 54 45 73 20 72 6f 77 73 20  ;# DELETEs rows 
5090: 39 30 20 39 31 20 39 32 20 39 37 0a 64 6f 5f 74  90 91 92 97.do_t
50a0: 65 73 74 20 77 68 65 72 65 39 2d 36 2e 33 2e 36  est where9-6.3.6
50b0: 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 0a 20   {.  db eval {. 
50c0: 20 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28     SELECT count(
50d0: 2a 29 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e  *) FROM t1 UNION
50e0: 20 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20   ALL.    SELECT 
50f0: 61 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  a FROM t1 WHERE 
5100: 61 20 42 45 54 57 45 45 4e 20 38 35 20 41 4e 44  a BETWEEN 85 AND
5110: 20 31 30 30 3b 0a 20 20 20 20 52 4f 4c 4c 42 41   100;.    ROLLBA
5120: 43 4b 3b 0a 20 20 7d 0a 7d 20 7b 39 35 20 38 35  CK;.  }.} {95 85
5130: 20 38 36 20 38 37 20 38 38 20 38 39 20 39 33 20   86 87 88 89 93 
5140: 39 34 20 39 35 20 39 36 20 39 38 20 39 39 7d 0a  94 95 96 98 99}.
5150: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d  .do_test where9-
5160: 36 2e 33 2e 37 20 7b 0a 20 20 63 6f 75 6e 74 5f  6.3.7 {.  count_
5170: 73 74 65 70 73 20 7b 0a 20 20 20 20 42 45 47 49  steps {.    BEGI
5180: 4e 3b 0a 20 20 20 20 55 50 44 41 54 45 20 74 31  N;.    UPDATE t1
5190: 20 53 45 54 20 61 3d 61 2b 31 30 30 0a 20 20 20   SET a=a+100.   
51a0: 20 20 57 48 45 52 45 20 28 62 20 49 53 20 4e 55    WHERE (b IS NU
51b0: 4c 4c 20 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c  LL AND c NOT NUL
51c0: 4c 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c  L AND d NOT NULL
51d0: 29 0a 20 20 20 20 20 20 20 20 4f 52 20 28 62 20  ).        OR (b 
51e0: 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 2b 63 20  NOT NULL AND +c 
51f0: 49 53 20 4e 55 4c 4c 20 41 4e 44 20 64 20 4e 4f  IS NULL AND d NO
5200: 54 20 4e 55 4c 4c 29 0a 20 20 20 20 20 20 20 20  T NULL).        
5210: 4f 52 20 28 62 20 4e 4f 54 20 4e 55 4c 4c 20 41  OR (b NOT NULL A
5220: 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e  ND c NOT NULL AN
5230: 44 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20 20 7d  D d IS NULL).  }
5240: 0a 7d 20 7b 73 63 61 6e 20 39 38 20 73 6f 72 74  .} {scan 98 sort
5250: 20 30 7d 20 20 20 3b 23 20 41 64 64 20 31 30 30   0}   ;# Add 100
5260: 20 74 6f 20 72 6f 77 69 64 73 20 39 30 20 39 31   to rowids 90 91
5270: 20 39 32 20 39 37 0a 64 6f 5f 74 65 73 74 20 77   92 97.do_test w
5280: 68 65 72 65 39 2d 36 2e 33 2e 38 20 7b 0a 20 20  here9-6.3.8 {.  
5290: 64 62 20 65 76 61 6c 20 7b 0a 20 20 20 20 53 45  db eval {.    SE
52a0: 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52  LECT count(*) FR
52b0: 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 0a  OM t1 UNION ALL.
52c0: 20 20 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f      SELECT a FRO
52d0: 4d 20 74 31 20 57 48 45 52 45 20 61 20 42 45 54  M t1 WHERE a BET
52e0: 57 45 45 4e 20 38 35 20 41 4e 44 20 31 30 30 3b  WEEN 85 AND 100;
52f0: 0a 20 20 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20  .    ROLLBACK;. 
5300: 20 7d 0a 7d 20 7b 39 39 20 38 35 20 38 36 20 38   }.} {99 85 86 8
5310: 37 20 38 38 20 38 39 20 39 33 20 39 34 20 39 35  7 88 89 93 94 95
5320: 20 39 36 20 39 38 20 39 39 7d 0a 0a 0a 64 6f 5f   96 98 99}...do_
5330: 74 65 73 74 20 77 68 65 72 65 39 2d 36 2e 34 2e  test where9-6.4.
5340: 31 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70  1 {.  count_step
5350: 73 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20  s {.    BEGIN;. 
5360: 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74     DELETE FROM t
5370: 31 0a 20 20 20 20 20 57 48 45 52 45 20 28 62 3e  1.     WHERE (b>
5380: 3d 39 35 30 20 41 4e 44 20 62 3c 3d 31 30 31 30  =950 AND b<=1010
5390: 29 20 4f 52 20 28 62 20 49 53 20 4e 55 4c 4c 20  ) OR (b IS NULL 
53a0: 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 29 0a  AND c NOT NULL).
53b0: 20 20 7d 0a 7d 20 7b 73 63 61 6e 20 30 20 73 6f    }.} {scan 0 so
53c0: 72 74 20 30 7d 20 20 3b 23 20 44 45 4c 45 54 45  rt 0}  ;# DELETE
53d0: 20 72 6f 77 73 20 38 37 20 38 38 20 38 39 20 39   rows 87 88 89 9
53e0: 30 20 39 31 0a 64 6f 5f 74 65 73 74 20 77 68 65  0 91.do_test whe
53f0: 72 65 39 2d 36 2e 34 2e 32 20 7b 0a 20 20 64 62  re9-6.4.2 {.  db
5400: 20 65 76 61 6c 20 7b 0a 20 20 20 20 53 45 4c 45   eval {.    SELE
5410: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
5420: 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20   t1 UNION ALL.  
5430: 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20    SELECT a FROM 
5440: 74 31 20 57 48 45 52 45 20 61 20 42 45 54 57 45  t1 WHERE a BETWE
5450: 45 4e 20 38 35 20 41 4e 44 20 31 30 30 3b 0a 20  EN 85 AND 100;. 
5460: 20 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20 20 7d     ROLLBACK;.  }
5470: 0a 7d 20 7b 39 34 20 38 35 20 38 36 20 39 32 20  .} {94 85 86 92 
5480: 39 33 20 39 34 20 39 35 20 39 36 20 39 37 20 39  93 94 95 96 97 9
5490: 38 20 39 39 7d 0a 64 6f 5f 74 65 73 74 20 77 68  8 99}.do_test wh
54a0: 65 72 65 39 2d 36 2e 34 2e 33 20 7b 0a 20 20 63  ere9-6.4.3 {.  c
54b0: 6f 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20  ount_steps {.   
54c0: 20 42 45 47 49 4e 3b 0a 20 20 20 20 55 50 44 41   BEGIN;.    UPDA
54d0: 54 45 20 74 31 20 53 45 54 20 61 3d 61 2b 31 30  TE t1 SET a=a+10
54e0: 30 0a 20 20 20 20 20 57 48 45 52 45 20 28 62 3e  0.     WHERE (b>
54f0: 3d 39 35 30 20 41 4e 44 20 62 3c 3d 31 30 31 30  =950 AND b<=1010
5500: 29 20 4f 52 20 28 62 20 49 53 20 4e 55 4c 4c 20  ) OR (b IS NULL 
5510: 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 29 0a  AND c NOT NULL).
5520: 20 20 7d 0a 7d 20 7b 73 63 61 6e 20 30 20 73 6f    }.} {scan 0 so
5530: 72 74 20 30 7d 20 20 3b 23 20 41 64 64 20 31 30  rt 0}  ;# Add 10
5540: 30 20 74 6f 20 72 6f 77 69 64 73 20 38 37 20 38  0 to rowids 87 8
5550: 38 20 38 39 20 39 30 20 39 31 0a 64 6f 5f 74 65  8 89 90 91.do_te
5560: 73 74 20 77 68 65 72 65 39 2d 36 2e 34 2e 34 20  st where9-6.4.4 
5570: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 0a 20 20  {.  db eval {.  
5580: 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a    SELECT count(*
5590: 29 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  ) FROM t1 UNION 
55a0: 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20 61  ALL.    SELECT a
55b0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61   FROM t1 WHERE a
55c0: 20 42 45 54 57 45 45 4e 20 38 35 20 41 4e 44 20   BETWEEN 85 AND 
55d0: 31 30 30 3b 0a 20 20 20 20 52 4f 4c 4c 42 41 43  100;.    ROLLBAC
55e0: 4b 3b 0a 20 20 7d 0a 7d 20 7b 39 39 20 38 35 20  K;.  }.} {99 85 
55f0: 38 36 20 39 32 20 39 33 20 39 34 20 39 35 20 39  86 92 93 94 95 9
5600: 36 20 39 37 20 39 38 20 39 39 7d 0a 0a 0a 64 6f  6 97 98 99}...do
5610: 5f 74 65 73 74 20 77 68 65 72 65 39 2d 36 2e 35  _test where9-6.5
5620: 2e 31 20 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65  .1 {.  count_ste
5630: 70 73 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a  ps {.    BEGIN;.
5640: 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20      DELETE FROM 
5650: 74 31 0a 20 20 20 20 20 57 48 45 52 45 20 61 3d  t1.     WHERE a=
5660: 38 33 0a 20 20 20 20 20 20 20 20 4f 52 20 62 3d  83.        OR b=
5670: 39 31 33 0a 20 20 20 20 20 20 20 20 4f 52 20 63  913.        OR c
5680: 3d 32 38 30 32 38 0a 20 20 20 20 20 20 20 20 4f  =28028.        O
5690: 52 20 28 64 3e 3d 38 32 20 41 4e 44 20 64 3c 38  R (d>=82 AND d<8
56a0: 33 29 0a 20 20 20 20 20 20 20 20 4f 52 20 28 65  3).        OR (e
56b0: 3e 32 38 30 32 20 41 4e 44 20 65 3c 32 38 30 33  >2802 AND e<2803
56c0: 29 20 0a 20 20 20 20 20 20 20 20 4f 52 20 66 3d  ) .        OR f=
56d0: 27 66 67 68 69 6a 6b 6c 6d 6e 27 0a 20 20 20 20  'fghijklmn'.    
56e0: 20 20 20 20 4f 52 20 67 3d 27 68 67 66 65 64 63      OR g='hgfedc
56f0: 62 27 0a 20 20 7d 0a 7d 20 7b 73 63 61 6e 20 30  b'.  }.} {scan 0
5700: 20 73 6f 72 74 20 30 7d 20 20 20 3b 23 20 20 44   sort 0}   ;#  D
5710: 45 4c 45 54 45 20 72 6f 77 73 20 35 20 33 31 20  ELETE rows 5 31 
5720: 35 37 20 38 32 20 38 33 20 38 34 20 38 35 20 38  57 82 83 84 85 8
5730: 36 20 38 37 0a 64 6f 5f 74 65 73 74 20 77 68 65  6 87.do_test whe
5740: 72 65 39 2d 36 2e 35 2e 32 20 7b 0a 20 20 64 62  re9-6.5.2 {.  db
5750: 20 65 76 61 6c 20 7b 0a 20 20 20 20 53 45 4c 45   eval {.    SELE
5760: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
5770: 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20   t1 UNION ALL.  
5780: 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20    SELECT a FROM 
5790: 74 31 20 57 48 45 52 45 20 61 20 49 4e 20 28 35  t1 WHERE a IN (5
57a0: 2c 33 31 2c 35 37 2c 38 32 2c 38 33 2c 38 34 2c  ,31,57,82,83,84,
57b0: 38 35 2c 38 36 2c 38 37 29 3b 0a 20 20 20 20 52  85,86,87);.    R
57c0: 4f 4c 4c 42 41 43 4b 3b 0a 20 20 7d 0a 7d 20 7b  OLLBACK;.  }.} {
57d0: 39 30 7d 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65  90}..do_test whe
57e0: 72 65 39 2d 36 2e 35 2e 33 20 7b 0a 20 20 63 6f  re9-6.5.3 {.  co
57f0: 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20  unt_steps {.    
5800: 42 45 47 49 4e 3b 0a 20 20 20 20 55 50 44 41 54  BEGIN;.    UPDAT
5810: 45 20 74 31 20 53 45 54 20 61 3d 61 2b 31 30 30  E t1 SET a=a+100
5820: 0a 20 20 20 20 20 57 48 45 52 45 20 61 3d 38 33  .     WHERE a=83
5830: 0a 20 20 20 20 20 20 20 20 4f 52 20 62 3d 39 31  .        OR b=91
5840: 33 0a 20 20 20 20 20 20 20 20 4f 52 20 63 3d 32  3.        OR c=2
5850: 38 30 32 38 0a 20 20 20 20 20 20 20 20 4f 52 20  8028.        OR 
5860: 28 64 3e 3d 38 32 20 41 4e 44 20 64 3c 38 33 29  (d>=82 AND d<83)
5870: 0a 20 20 20 20 20 20 20 20 4f 52 20 28 65 3e 32  .        OR (e>2
5880: 38 30 32 20 41 4e 44 20 65 3c 32 38 30 33 29 20  802 AND e<2803) 
5890: 0a 20 20 20 20 20 20 20 20 4f 52 20 66 3d 27 66  .        OR f='f
58a0: 67 68 69 6a 6b 6c 6d 6e 27 0a 20 20 20 20 20 20  ghijklmn'.      
58b0: 20 20 4f 52 20 67 3d 27 68 67 66 65 64 63 62 27    OR g='hgfedcb'
58c0: 0a 20 20 7d 0a 7d 20 7b 73 63 61 6e 20 30 20 73  .  }.} {scan 0 s
58d0: 6f 72 74 20 30 7d 20 20 20 3b 23 20 20 41 64 64  ort 0}   ;#  Add
58e0: 20 31 30 30 20 74 6f 20 72 6f 77 69 64 73 20 35   100 to rowids 5
58f0: 20 33 31 20 35 37 20 38 32 20 38 33 20 38 34 20   31 57 82 83 84 
5900: 38 35 20 38 36 20 38 37 0a 64 6f 5f 74 65 73 74  85 86 87.do_test
5910: 20 77 68 65 72 65 39 2d 36 2e 35 2e 34 20 7b 0a   where9-6.5.4 {.
5920: 20 20 64 62 20 65 76 61 6c 20 7b 0a 20 20 20 20    db eval {.    
5930: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
5940: 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c  FROM t1 UNION AL
5950: 4c 0a 20 20 20 20 53 45 4c 45 43 54 20 61 20 46  L.    SELECT a F
5960: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61 25 31  ROM t1 WHERE a%1
5970: 30 30 20 49 4e 20 28 35 2c 33 31 2c 35 37 2c 38  00 IN (5,31,57,8
5980: 32 2c 38 33 2c 38 34 2c 38 35 2c 38 36 2c 38 37  2,83,84,85,86,87
5990: 29 3b 0a 20 20 20 20 52 4f 4c 4c 42 41 43 4b 3b  );.    ROLLBACK;
59a0: 0a 20 20 7d 0a 7d 20 7b 39 39 20 31 30 35 20 31  .  }.} {99 105 1
59b0: 33 31 20 31 35 37 20 31 38 32 20 31 38 33 20 31  31 157 182 183 1
59c0: 38 34 20 31 38 35 20 31 38 36 20 31 38 37 7d 0a  84 185 186 187}.
59d0: 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d  .do_test where9-
59e0: 36 2e 36 2e 31 20 7b 0a 20 20 63 6f 75 6e 74 5f  6.6.1 {.  count_
59f0: 73 74 65 70 73 20 7b 0a 20 20 20 20 42 45 47 49  steps {.    BEGI
5a00: 4e 3b 0a 20 20 20 20 44 45 4c 45 54 45 20 46 52  N;.    DELETE FR
5a10: 4f 4d 20 74 31 0a 20 20 20 20 20 57 48 45 52 45  OM t1.     WHERE
5a20: 20 28 62 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20   (b IS NULL AND 
5a30: 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 64  c NOT NULL AND d
5a40: 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20 20 20 20   NOT NULL).     
5a50: 20 20 20 4f 52 20 28 62 20 4e 4f 54 20 4e 55 4c     OR (b NOT NUL
5a60: 4c 20 41 4e 44 20 2b 63 20 49 53 20 4e 55 4c 4c  L AND +c IS NULL
5a70: 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c 29   AND d NOT NULL)
5a80: 0a 20 20 20 20 20 20 20 20 4f 52 20 28 62 20 4e  .        OR (b N
5a90: 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 63 20 4e 4f  OT NULL AND c NO
5aa0: 54 20 4e 55 4c 4c 20 41 4e 44 20 64 20 49 53 20  T NULL AND d IS 
5ab0: 4e 55 4c 4c 29 0a 20 20 7d 0a 7d 20 7b 73 63 61  NULL).  }.} {sca
5ac0: 6e 20 39 38 20 73 6f 72 74 20 30 7d 20 20 20 3b  n 98 sort 0}   ;
5ad0: 23 20 44 45 4c 45 54 45 73 20 72 6f 77 73 20 39  # DELETEs rows 9
5ae0: 30 20 39 31 20 39 32 20 39 37 0a 64 6f 5f 74 65  0 91 92 97.do_te
5af0: 73 74 20 77 68 65 72 65 39 2d 36 2e 36 2e 32 20  st where9-6.6.2 
5b00: 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b 0a 20 20  {.  db eval {.  
5b10: 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a    SELECT count(*
5b20: 29 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  ) FROM t1 UNION 
5b30: 41 4c 4c 0a 20 20 20 20 53 45 4c 45 43 54 20 61  ALL.    SELECT a
5b40: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 61   FROM t1 WHERE a
5b50: 20 42 45 54 57 45 45 4e 20 38 35 20 41 4e 44 20   BETWEEN 85 AND 
5b60: 31 30 30 3b 0a 20 20 20 20 52 4f 4c 4c 42 41 43  100;.    ROLLBAC
5b70: 4b 3b 0a 20 20 7d 0a 7d 20 7b 39 35 20 38 35 20  K;.  }.} {95 85 
5b80: 38 36 20 38 37 20 38 38 20 38 39 20 39 33 20 39  86 87 88 89 93 9
5b90: 34 20 39 35 20 39 36 20 39 38 20 39 39 7d 0a 0a  4 95 96 98 99}..
5ba0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d 36  do_test where9-6
5bb0: 2e 36 2e 33 20 7b 0a 20 20 63 6f 75 6e 74 5f 73  .6.3 {.  count_s
5bc0: 74 65 70 73 20 7b 0a 20 20 20 20 42 45 47 49 4e  teps {.    BEGIN
5bd0: 3b 0a 20 20 20 20 55 50 44 41 54 45 20 74 31 20  ;.    UPDATE t1 
5be0: 53 45 54 20 61 3d 61 2b 31 30 30 0a 20 20 20 20  SET a=a+100.    
5bf0: 20 57 48 45 52 45 20 28 62 20 49 53 20 4e 55 4c   WHERE (b IS NUL
5c00: 4c 20 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c  L AND c NOT NULL
5c10: 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c 29   AND d NOT NULL)
5c20: 0a 20 20 20 20 20 20 20 20 4f 52 20 28 62 20 4e  .        OR (b N
5c30: 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 2b 63 20 49  OT NULL AND +c I
5c40: 53 20 4e 55 4c 4c 20 41 4e 44 20 64 20 4e 4f 54  S NULL AND d NOT
5c50: 20 4e 55 4c 4c 29 0a 20 20 20 20 20 20 20 20 4f   NULL).        O
5c60: 52 20 28 62 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e  R (b NOT NULL AN
5c70: 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44  D c NOT NULL AND
5c80: 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20 20 7d 0a   d IS NULL).  }.
5c90: 7d 20 7b 73 63 61 6e 20 39 38 20 73 6f 72 74 20  } {scan 98 sort 
5ca0: 30 7d 20 20 20 3b 23 20 41 64 64 20 31 30 30 20  0}   ;# Add 100 
5cb0: 74 6f 20 72 6f 77 69 64 73 20 39 30 20 39 31 20  to rowids 90 91 
5cc0: 39 32 20 39 37 0a 64 6f 5f 74 65 73 74 20 77 68  92 97.do_test wh
5cd0: 65 72 65 39 2d 36 2e 36 2e 34 20 7b 0a 20 20 64  ere9-6.6.4 {.  d
5ce0: 62 20 65 76 61 6c 20 7b 0a 20 20 20 20 53 45 4c  b eval {.    SEL
5cf0: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
5d00: 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20  M t1 UNION ALL. 
5d10: 20 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d     SELECT a FROM
5d20: 20 74 31 20 57 48 45 52 45 20 61 20 42 45 54 57   t1 WHERE a BETW
5d30: 45 45 4e 20 38 35 20 41 4e 44 20 32 30 30 3b 0a  EEN 85 AND 200;.
5d40: 20 20 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20 20      ROLLBACK;.  
5d50: 7d 0a 7d 20 7b 39 39 20 38 35 20 38 36 20 38 37  }.} {99 85 86 87
5d60: 20 38 38 20 38 39 20 39 33 20 39 34 20 39 35 20   88 89 93 94 95 
5d70: 39 36 20 39 38 20 39 39 20 31 39 30 20 31 39 31  96 98 99 190 191
5d80: 20 31 39 32 20 31 39 37 7d 0a 0a 64 6f 5f 74 65   192 197}..do_te
5d90: 73 74 20 77 68 65 72 65 39 2d 36 2e 37 2e 31 20  st where9-6.7.1 
5da0: 7b 0a 20 20 63 6f 75 6e 74 5f 73 74 65 70 73 20  {.  count_steps 
5db0: 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20 20  {.    BEGIN;.   
5dc0: 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 20   DELETE FROM t1 
5dd0: 4e 4f 54 20 49 4e 44 45 58 45 44 0a 20 20 20 20  NOT INDEXED.    
5de0: 20 57 48 45 52 45 20 28 62 20 49 53 20 4e 55 4c   WHERE (b IS NUL
5df0: 4c 20 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c  L AND c NOT NULL
5e00: 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c 29   AND d NOT NULL)
5e10: 0a 20 20 20 20 20 20 20 20 4f 52 20 28 62 20 4e  .        OR (b N
5e20: 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 63 20 49 53  OT NULL AND c IS
5e30: 20 4e 55 4c 4c 20 41 4e 44 20 64 20 4e 4f 54 20   NULL AND d NOT 
5e40: 4e 55 4c 4c 29 0a 20 20 20 20 20 20 20 20 4f 52  NULL).        OR
5e50: 20 28 62 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44   (b NOT NULL AND
5e60: 20 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20   c NOT NULL AND 
5e70: 64 20 49 53 20 4e 55 4c 4c 29 0a 20 20 7d 0a 7d  d IS NULL).  }.}
5e80: 20 7b 73 63 61 6e 20 39 38 20 73 6f 72 74 20 30   {scan 98 sort 0
5e90: 7d 20 20 20 3b 23 20 44 45 4c 45 54 45 73 20 72  }   ;# DELETEs r
5ea0: 6f 77 73 20 39 30 20 39 31 20 39 32 20 39 37 0a  ows 90 91 92 97.
5eb0: 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39 2d 36  do_test where9-6
5ec0: 2e 37 2e 32 20 7b 0a 20 20 64 62 20 65 76 61 6c  .7.2 {.  db eval
5ed0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 63 6f   {.    SELECT co
5ee0: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 20 55  unt(*) FROM t1 U
5ef0: 4e 49 4f 4e 20 41 4c 4c 0a 20 20 20 20 53 45 4c  NION ALL.    SEL
5f00: 45 43 54 20 61 20 46 52 4f 4d 20 74 31 20 57 48  ECT a FROM t1 WH
5f10: 45 52 45 20 61 20 42 45 54 57 45 45 4e 20 38 35  ERE a BETWEEN 85
5f20: 20 41 4e 44 20 31 30 30 3b 0a 20 20 20 20 52 4f   AND 100;.    RO
5f30: 4c 4c 42 41 43 4b 3b 0a 20 20 7d 0a 7d 20 7b 39  LLBACK;.  }.} {9
5f40: 35 20 38 35 20 38 36 20 38 37 20 38 38 20 38 39  5 85 86 87 88 89
5f50: 20 39 33 20 39 34 20 39 35 20 39 36 20 39 38 20   93 94 95 96 98 
5f60: 39 39 7d 0a 0a 64 6f 5f 74 65 73 74 20 77 68 65  99}..do_test whe
5f70: 72 65 39 2d 36 2e 37 2e 33 20 7b 0a 20 20 63 6f  re9-6.7.3 {.  co
5f80: 75 6e 74 5f 73 74 65 70 73 20 7b 0a 20 20 20 20  unt_steps {.    
5f90: 42 45 47 49 4e 3b 0a 20 20 20 20 55 50 44 41 54  BEGIN;.    UPDAT
5fa0: 45 20 74 31 20 4e 4f 54 20 49 4e 44 45 58 45 44  E t1 NOT INDEXED
5fb0: 20 53 45 54 20 61 3d 61 2b 31 30 30 0a 20 20 20   SET a=a+100.   
5fc0: 20 20 57 48 45 52 45 20 28 62 20 49 53 20 4e 55    WHERE (b IS NU
5fd0: 4c 4c 20 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c  LL AND c NOT NUL
5fe0: 4c 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55 4c 4c  L AND d NOT NULL
5ff0: 29 0a 20 20 20 20 20 20 20 20 4f 52 20 28 62 20  ).        OR (b 
6000: 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 63 20 49  NOT NULL AND c I
6010: 53 20 4e 55 4c 4c 20 41 4e 44 20 64 20 4e 4f 54  S NULL AND d NOT
6020: 20 4e 55 4c 4c 29 0a 20 20 20 20 20 20 20 20 4f   NULL).        O
6030: 52 20 28 62 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e  R (b NOT NULL AN
6040: 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44  D c NOT NULL AND
6050: 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20 20 7d 0a   d IS NULL).  }.
6060: 7d 20 7b 73 63 61 6e 20 39 38 20 73 6f 72 74 20  } {scan 98 sort 
6070: 30 7d 20 20 20 3b 23 20 41 64 64 20 31 30 30 20  0}   ;# Add 100 
6080: 74 6f 20 72 6f 77 69 64 73 20 39 30 20 39 31 20  to rowids 90 91 
6090: 39 32 20 39 37 0a 64 6f 5f 74 65 73 74 20 77 68  92 97.do_test wh
60a0: 65 72 65 39 2d 36 2e 37 2e 34 20 7b 0a 20 20 64  ere9-6.7.4 {.  d
60b0: 62 20 65 76 61 6c 20 7b 0a 20 20 20 20 53 45 4c  b eval {.    SEL
60c0: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
60d0: 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20  M t1 UNION ALL. 
60e0: 20 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d     SELECT a FROM
60f0: 20 74 31 20 57 48 45 52 45 20 61 20 42 45 54 57   t1 WHERE a BETW
6100: 45 45 4e 20 38 35 20 41 4e 44 20 32 30 30 3b 0a  EEN 85 AND 200;.
6110: 20 20 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20 20      ROLLBACK;.  
6120: 7d 0a 7d 20 7b 39 39 20 38 35 20 38 36 20 38 37  }.} {99 85 86 87
6130: 20 38 38 20 38 39 20 39 33 20 39 34 20 39 35 20   88 89 93 94 95 
6140: 39 36 20 39 38 20 39 39 20 31 39 30 20 31 39 31  96 98 99 190 191
6150: 20 31 39 32 20 31 39 37 7d 0a 0a 64 6f 5f 74 65   192 197}..do_te
6160: 73 74 20 77 68 65 72 65 39 2d 36 2e 38 2e 31 20  st where9-6.8.1 
6170: 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20  {.  catchsql {. 
6180: 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74     DELETE FROM t
6190: 31 20 49 4e 44 45 58 45 44 20 42 59 20 74 31 62  1 INDEXED BY t1b
61a0: 0a 20 20 20 20 20 57 48 45 52 45 20 28 62 20 49  .     WHERE (b I
61b0: 53 20 4e 55 4c 4c 20 41 4e 44 20 63 20 4e 4f 54  S NULL AND c NOT
61c0: 20 4e 55 4c 4c 20 41 4e 44 20 64 20 4e 4f 54 20   NULL AND d NOT 
61d0: 4e 55 4c 4c 29 0a 20 20 20 20 20 20 20 20 4f 52  NULL).        OR
61e0: 20 28 62 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44   (b NOT NULL AND
61f0: 20 63 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 64   c IS NULL AND d
6200: 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20 20 20 20   NOT NULL).     
6210: 20 20 20 4f 52 20 28 62 20 4e 4f 54 20 4e 55 4c     OR (b NOT NUL
6220: 4c 20 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c  L AND c NOT NULL
6230: 20 41 4e 44 20 64 20 49 53 20 4e 55 4c 4c 29 0a   AND d IS NULL).
6240: 20 20 7d 0a 7d 20 7b 31 20 7b 63 61 6e 6e 6f 74    }.} {1 {cannot
6250: 20 75 73 65 20 69 6e 64 65 78 3a 20 74 31 62 7d   use index: t1b}
6260: 7d 0a 64 6f 5f 74 65 73 74 20 77 68 65 72 65 39  }.do_test where9
6270: 2d 36 2e 38 2e 32 20 7b 0a 20 20 63 61 74 63 68  -6.8.2 {.  catch
6280: 73 71 6c 20 7b 0a 20 20 20 20 55 50 44 41 54 45  sql {.    UPDATE
6290: 20 74 31 20 49 4e 44 45 58 45 44 20 42 59 20 74   t1 INDEXED BY t
62a0: 31 62 20 53 45 54 20 61 3d 61 2b 31 30 30 0a 20  1b SET a=a+100. 
62b0: 20 20 20 20 57 48 45 52 45 20 28 62 20 49 53 20      WHERE (b IS 
62c0: 4e 55 4c 4c 20 41 4e 44 20 63 20 4e 4f 54 20 4e  NULL AND c NOT N
62d0: 55 4c 4c 20 41 4e 44 20 64 20 4e 4f 54 20 4e 55  ULL AND d NOT NU
62e0: 4c 4c 29 0a 20 20 20 20 20 20 20 20 4f 52 20 28  LL).        OR (
62f0: 62 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 63  b NOT NULL AND c
6300: 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 64 20 4e   IS NULL AND d N
6310: 4f 54 20 4e 55 4c 4c 29 0a 20 20 20 20 20 20 20  OT NULL).       
6320: 20 4f 52 20 28 62 20 4e 4f 54 20 4e 55 4c 4c 20   OR (b NOT NULL 
6330: 41 4e 44 20 63 20 4e 4f 54 20 4e 55 4c 4c 20 41  AND c NOT NULL A
6340: 4e 44 20 64 20 49 53 20 4e 55 4c 4c 29 0a 20 20  ND d IS NULL).  
6350: 7d 0a 7d 20 7b 31 20 7b 63 61 6e 6e 6f 74 20 75  }.} {1 {cannot u
6360: 73 65 20 69 6e 64 65 78 3a 20 74 31 62 7d 7d 0a  se index: t1b}}.
6370: 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a           .finish_test.