/ Hex Artifact Content
Login

Artifact 499ad0310da8dff8e8f98d2e272fc2a8aa741b2e:


0000: 2f 2a 0a 2a 2a 20 54 68 69 73 20 73 63 72 69 70  /*.** This scrip
0010: 74 20 73 65 74 73 20 75 70 20 66 69 76 65 20 64  t sets up five d
0020: 69 66 66 65 72 65 6e 74 20 74 61 73 6b 73 20 61  ifferent tasks a
0030: 6c 6c 20 77 72 69 74 69 6e 67 20 61 6e 64 20 75  ll writing and u
0040: 70 64 61 74 69 6e 67 0a 2a 2a 20 74 68 65 20 64  pdating.** the d
0050: 61 74 61 62 61 73 65 20 61 74 20 74 68 65 20 73  atabase at the s
0060: 61 6d 65 20 74 69 6d 65 2c 20 62 75 74 20 65 61  ame time, but ea
0070: 63 68 20 69 6e 20 69 74 73 20 6f 77 6e 20 74 61  ch in its own ta
0080: 62 6c 65 2e 0a 2a 2f 0a 2d 2d 74 61 73 6b 20 31  ble..*/.--task 1
0090: 20 62 75 69 6c 64 2d 74 31 0a 20 20 44 52 4f 50   build-t1.  DROP
00a0: 20 54 41 42 4c 45 20 49 46 20 45 58 49 53 54 53   TABLE IF EXISTS
00b0: 20 74 31 3b 0a 20 20 43 52 45 41 54 45 20 54 41   t1;.  CREATE TA
00c0: 42 4c 45 20 74 31 28 61 20 49 4e 54 45 47 45 52  BLE t1(a INTEGER
00d0: 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 29   PRIMARY KEY, b)
00e0: 3b 0a 20 20 2d 2d 73 6c 65 65 70 20 31 0a 20 20  ;.  --sleep 1.  
00f0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0100: 41 4c 55 45 53 28 31 2c 20 72 61 6e 64 6f 6d 62  ALUES(1, randomb
0110: 6c 6f 62 28 32 30 30 30 29 29 3b 0a 20 20 49 4e  lob(2000));.  IN
0120: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0130: 55 45 53 28 32 2c 20 72 61 6e 64 6f 6d 62 6c 6f  UES(2, randomblo
0140: 62 28 31 30 30 30 29 29 3b 0a 20 20 2d 2d 73 6c  b(1000));.  --sl
0150: 65 65 70 20 31 0a 20 20 49 4e 53 45 52 54 20 49  eep 1.  INSERT I
0160: 4e 54 4f 20 74 31 20 53 45 4c 45 43 54 20 61 2b  NTO t1 SELECT a+
0170: 32 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 35  2, randomblob(15
0180: 30 30 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20 49  00) FROM t1;.  I
0190: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 53 45  NSERT INTO t1 SE
01a0: 4c 45 43 54 20 61 2b 34 2c 20 72 61 6e 64 6f 6d  LECT a+4, random
01b0: 62 6c 6f 62 28 31 35 30 30 29 20 46 52 4f 4d 20  blob(1500) FROM 
01c0: 74 31 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  t1;.  INSERT INT
01d0: 4f 20 74 31 20 53 45 4c 45 43 54 20 61 2b 38 2c  O t1 SELECT a+8,
01e0: 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 35 30 30   randomblob(1500
01f0: 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20 2d 2d 73  ) FROM t1;.  --s
0200: 6c 65 65 70 20 31 0a 20 20 49 4e 53 45 52 54 20  leep 1.  INSERT 
0210: 49 4e 54 4f 20 74 31 20 53 45 4c 45 43 54 20 61  INTO t1 SELECT a
0220: 2b 31 36 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28  +16, randomblob(
0230: 31 35 30 30 29 20 46 52 4f 4d 20 74 31 3b 0a 20  1500) FROM t1;. 
0240: 20 2d 2d 73 6c 65 65 70 20 31 0a 20 20 49 4e 53   --sleep 1.  INS
0250: 45 52 54 20 49 4e 54 4f 20 74 31 20 53 45 4c 45  ERT INTO t1 SELE
0260: 43 54 20 61 2b 33 32 2c 20 72 61 6e 64 6f 6d 62  CT a+32, randomb
0270: 6c 6f 62 28 31 35 30 30 29 20 46 52 4f 4d 20 74  lob(1500) FROM t
0280: 31 3b 0a 20 20 53 45 4c 45 43 54 20 63 6f 75 6e  1;.  SELECT coun
0290: 74 28 2a 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20  t(*) FROM t1;.  
02a0: 2d 2d 6d 61 74 63 68 20 36 34 0a 20 20 53 45 4c  --match 64.  SEL
02b0: 45 43 54 20 61 76 67 28 6c 65 6e 67 74 68 28 62  ECT avg(length(b
02c0: 29 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20 2d 2d  )) FROM t1;.  --
02d0: 6d 61 74 63 68 20 31 35 30 30 2e 30 0a 20 20 2d  match 1500.0.  -
02e0: 2d 73 6c 65 65 70 20 32 0a 20 20 55 50 44 41 54  -sleep 2.  UPDAT
02f0: 45 20 74 31 20 53 45 54 20 62 3d 27 78 27 7c 7c  E t1 SET b='x'||
0300: 61 7c 7c 27 79 27 3b 0a 20 20 53 45 4c 45 43 54  a||'y';.  SELECT
0310: 20 73 75 6d 28 6c 65 6e 67 74 68 28 62 29 29 20   sum(length(b)) 
0320: 46 52 4f 4d 20 74 31 3b 0a 20 20 2d 2d 6d 61 74  FROM t1;.  --mat
0330: 63 68 20 32 34 37 0a 20 20 53 45 4c 45 43 54 20  ch 247.  SELECT 
0340: 61 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  a FROM t1 WHERE 
0350: 62 3d 27 78 31 37 79 27 3b 0a 20 20 2d 2d 6d 61  b='x17y';.  --ma
0360: 74 63 68 20 31 37 0a 20 20 43 52 45 41 54 45 20  tch 17.  CREATE 
0370: 49 4e 44 45 58 20 74 31 62 20 4f 4e 20 74 31 28  INDEX t1b ON t1(
0380: 62 29 3b 0a 20 20 53 45 4c 45 43 54 20 61 20 46  b);.  SELECT a F
0390: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3d 27  ROM t1 WHERE b='
03a0: 78 31 37 79 27 3b 0a 20 20 2d 2d 6d 61 74 63 68  x17y';.  --match
03b0: 20 31 37 0a 20 20 53 45 4c 45 43 54 20 61 20 46   17.  SELECT a F
03c0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 20 47  ROM t1 WHERE b G
03d0: 4c 4f 42 20 27 78 32 3f 79 27 20 4f 52 44 45 52  LOB 'x2?y' ORDER
03e0: 20 42 59 20 62 20 44 45 53 43 20 4c 49 4d 49 54   BY b DESC LIMIT
03f0: 20 35 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 32 39   5;.  --match 29
0400: 20 32 38 20 32 37 20 32 36 20 32 35 0a 2d 2d 65   28 27 26 25.--e
0410: 6e 64 0a 0a 0a 2d 2d 74 61 73 6b 20 32 20 62 75  nd...--task 2 bu
0420: 69 6c 64 2d 74 32 0a 20 20 44 52 4f 50 20 54 41  ild-t2.  DROP TA
0430: 42 4c 45 20 49 46 20 45 58 49 53 54 53 20 74 32  BLE IF EXISTS t2
0440: 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  ;.  CREATE TABLE
0450: 20 74 32 28 61 20 49 4e 54 45 47 45 52 20 50 52   t2(a INTEGER PR
0460: 49 4d 41 52 59 20 4b 45 59 2c 20 62 29 3b 0a 20  IMARY KEY, b);. 
0470: 20 2d 2d 73 6c 65 65 70 20 31 0a 20 20 49 4e 53   --sleep 1.  INS
0480: 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55  ERT INTO t2 VALU
0490: 45 53 28 31 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62  ES(1, randomblob
04a0: 28 32 30 30 30 29 29 3b 0a 20 20 49 4e 53 45 52  (2000));.  INSER
04b0: 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53  T INTO t2 VALUES
04c0: 28 32 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31  (2, randomblob(1
04d0: 30 30 30 29 29 3b 0a 20 20 2d 2d 73 6c 65 65 70  000));.  --sleep
04e0: 20 31 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f   1.  INSERT INTO
04f0: 20 74 32 20 53 45 4c 45 43 54 20 61 2b 32 2c 20   t2 SELECT a+2, 
0500: 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 35 30 30 29  randomblob(1500)
0510: 20 46 52 4f 4d 20 74 32 3b 0a 20 20 49 4e 53 45   FROM t2;.  INSE
0520: 52 54 20 49 4e 54 4f 20 74 32 20 53 45 4c 45 43  RT INTO t2 SELEC
0530: 54 20 61 2b 34 2c 20 72 61 6e 64 6f 6d 62 6c 6f  T a+4, randomblo
0540: 62 28 31 35 30 30 29 20 46 52 4f 4d 20 74 32 3b  b(1500) FROM t2;
0550: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
0560: 32 20 53 45 4c 45 43 54 20 61 2b 38 2c 20 72 61  2 SELECT a+8, ra
0570: 6e 64 6f 6d 62 6c 6f 62 28 31 35 30 30 29 20 46  ndomblob(1500) F
0580: 52 4f 4d 20 74 32 3b 0a 20 20 2d 2d 73 6c 65 65  ROM t2;.  --slee
0590: 70 20 31 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  p 1.  INSERT INT
05a0: 4f 20 74 32 20 53 45 4c 45 43 54 20 61 2b 31 36  O t2 SELECT a+16
05b0: 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 35 30  , randomblob(150
05c0: 30 29 20 46 52 4f 4d 20 74 32 3b 0a 20 20 2d 2d  0) FROM t2;.  --
05d0: 73 6c 65 65 70 20 31 0a 20 20 49 4e 53 45 52 54  sleep 1.  INSERT
05e0: 20 49 4e 54 4f 20 74 32 20 53 45 4c 45 43 54 20   INTO t2 SELECT 
05f0: 61 2b 33 32 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62  a+32, randomblob
0600: 28 31 35 30 30 29 20 46 52 4f 4d 20 74 32 3b 0a  (1500) FROM t2;.
0610: 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a    SELECT count(*
0620: 29 20 46 52 4f 4d 20 74 32 3b 0a 20 20 2d 2d 6d  ) FROM t2;.  --m
0630: 61 74 63 68 20 36 34 0a 20 20 53 45 4c 45 43 54  atch 64.  SELECT
0640: 20 61 76 67 28 6c 65 6e 67 74 68 28 62 29 29 20   avg(length(b)) 
0650: 46 52 4f 4d 20 74 32 3b 0a 20 20 2d 2d 6d 61 74  FROM t2;.  --mat
0660: 63 68 20 31 35 30 30 2e 30 0a 20 20 2d 2d 73 6c  ch 1500.0.  --sl
0670: 65 65 70 20 32 0a 20 20 55 50 44 41 54 45 20 74  eep 2.  UPDATE t
0680: 32 20 53 45 54 20 62 3d 27 78 27 7c 7c 61 7c 7c  2 SET b='x'||a||
0690: 27 79 27 3b 0a 20 20 53 45 4c 45 43 54 20 73 75  'y';.  SELECT su
06a0: 6d 28 6c 65 6e 67 74 68 28 62 29 29 20 46 52 4f  m(length(b)) FRO
06b0: 4d 20 74 32 3b 0a 20 20 2d 2d 6d 61 74 63 68 20  M t2;.  --match 
06c0: 32 34 37 0a 20 20 53 45 4c 45 43 54 20 61 20 46  247.  SELECT a F
06d0: 52 4f 4d 20 74 32 20 57 48 45 52 45 20 62 3d 27  ROM t2 WHERE b='
06e0: 78 31 37 79 27 3b 0a 20 20 2d 2d 6d 61 74 63 68  x17y';.  --match
06f0: 20 31 37 0a 20 20 43 52 45 41 54 45 20 49 4e 44   17.  CREATE IND
0700: 45 58 20 74 32 62 20 4f 4e 20 74 32 28 62 29 3b  EX t2b ON t2(b);
0710: 0a 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d  .  SELECT a FROM
0720: 20 74 32 20 57 48 45 52 45 20 62 3d 27 78 31 37   t2 WHERE b='x17
0730: 79 27 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 31 37  y';.  --match 17
0740: 0a 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d  .  SELECT a FROM
0750: 20 74 32 20 57 48 45 52 45 20 62 20 47 4c 4f 42   t2 WHERE b GLOB
0760: 20 27 78 32 3f 79 27 20 4f 52 44 45 52 20 42 59   'x2?y' ORDER BY
0770: 20 62 20 44 45 53 43 20 4c 49 4d 49 54 20 35 3b   b DESC LIMIT 5;
0780: 0a 20 20 2d 2d 6d 61 74 63 68 20 32 39 20 32 38  .  --match 29 28
0790: 20 32 37 20 32 36 20 32 35 0a 2d 2d 65 6e 64 0a   27 26 25.--end.
07a0: 0a 2d 2d 74 61 73 6b 20 33 20 62 75 69 6c 64 2d  .--task 3 build-
07b0: 74 33 0a 20 20 44 52 4f 50 20 54 41 42 4c 45 20  t3.  DROP TABLE 
07c0: 49 46 20 45 58 49 53 54 53 20 74 33 3b 0a 20 20  IF EXISTS t3;.  
07d0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 33 28  CREATE TABLE t3(
07e0: 61 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  a INTEGER PRIMAR
07f0: 59 20 4b 45 59 2c 20 62 29 3b 0a 20 20 2d 2d 73  Y KEY, b);.  --s
0800: 6c 65 65 70 20 31 0a 20 20 49 4e 53 45 52 54 20  leep 1.  INSERT 
0810: 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28 31  INTO t3 VALUES(1
0820: 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 32 30 30  , randomblob(200
0830: 30 29 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e  0));.  INSERT IN
0840: 54 4f 20 74 33 20 56 41 4c 55 45 53 28 32 2c 20  TO t3 VALUES(2, 
0850: 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 30 30 30 29  randomblob(1000)
0860: 29 3b 0a 20 20 2d 2d 73 6c 65 65 70 20 31 0a 20  );.  --sleep 1. 
0870: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20   INSERT INTO t3 
0880: 53 45 4c 45 43 54 20 61 2b 32 2c 20 72 61 6e 64  SELECT a+2, rand
0890: 6f 6d 62 6c 6f 62 28 31 35 30 30 29 20 46 52 4f  omblob(1500) FRO
08a0: 4d 20 74 33 3b 0a 20 20 49 4e 53 45 52 54 20 49  M t3;.  INSERT I
08b0: 4e 54 4f 20 74 33 20 53 45 4c 45 43 54 20 61 2b  NTO t3 SELECT a+
08c0: 34 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 35  4, randomblob(15
08d0: 30 30 29 20 46 52 4f 4d 20 74 33 3b 0a 20 20 49  00) FROM t3;.  I
08e0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 53 45  NSERT INTO t3 SE
08f0: 4c 45 43 54 20 61 2b 38 2c 20 72 61 6e 64 6f 6d  LECT a+8, random
0900: 62 6c 6f 62 28 31 35 30 30 29 20 46 52 4f 4d 20  blob(1500) FROM 
0910: 74 33 3b 0a 20 20 2d 2d 73 6c 65 65 70 20 31 0a  t3;.  --sleep 1.
0920: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33    INSERT INTO t3
0930: 20 53 45 4c 45 43 54 20 61 2b 31 36 2c 20 72 61   SELECT a+16, ra
0940: 6e 64 6f 6d 62 6c 6f 62 28 31 35 30 30 29 20 46  ndomblob(1500) F
0950: 52 4f 4d 20 74 33 3b 0a 20 20 2d 2d 73 6c 65 65  ROM t3;.  --slee
0960: 70 20 31 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  p 1.  INSERT INT
0970: 4f 20 74 33 20 53 45 4c 45 43 54 20 61 2b 33 32  O t3 SELECT a+32
0980: 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 35 30  , randomblob(150
0990: 30 29 20 46 52 4f 4d 20 74 33 3b 0a 20 20 53 45  0) FROM t3;.  SE
09a0: 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52  LECT count(*) FR
09b0: 4f 4d 20 74 33 3b 0a 20 20 2d 2d 6d 61 74 63 68  OM t3;.  --match
09c0: 20 36 34 0a 20 20 53 45 4c 45 43 54 20 61 76 67   64.  SELECT avg
09d0: 28 6c 65 6e 67 74 68 28 62 29 29 20 46 52 4f 4d  (length(b)) FROM
09e0: 20 74 33 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 31   t3;.  --match 1
09f0: 35 30 30 2e 30 0a 20 20 2d 2d 73 6c 65 65 70 20  500.0.  --sleep 
0a00: 32 0a 20 20 55 50 44 41 54 45 20 74 33 20 53 45  2.  UPDATE t3 SE
0a10: 54 20 62 3d 27 78 27 7c 7c 61 7c 7c 27 79 27 3b  T b='x'||a||'y';
0a20: 0a 20 20 53 45 4c 45 43 54 20 73 75 6d 28 6c 65  .  SELECT sum(le
0a30: 6e 67 74 68 28 62 29 29 20 46 52 4f 4d 20 74 33  ngth(b)) FROM t3
0a40: 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 32 34 37 0a  ;.  --match 247.
0a50: 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20    SELECT a FROM 
0a60: 74 33 20 57 48 45 52 45 20 62 3d 27 78 31 37 79  t3 WHERE b='x17y
0a70: 27 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 31 37 0a  ';.  --match 17.
0a80: 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 74    CREATE INDEX t
0a90: 33 62 20 4f 4e 20 74 33 28 62 29 3b 0a 20 20 53  3b ON t3(b);.  S
0aa0: 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 33 20  ELECT a FROM t3 
0ab0: 57 48 45 52 45 20 62 3d 27 78 31 37 79 27 3b 0a  WHERE b='x17y';.
0ac0: 20 20 2d 2d 6d 61 74 63 68 20 31 37 0a 20 20 53    --match 17.  S
0ad0: 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 33 20  ELECT a FROM t3 
0ae0: 57 48 45 52 45 20 62 20 47 4c 4f 42 20 27 78 32  WHERE b GLOB 'x2
0af0: 3f 79 27 20 4f 52 44 45 52 20 42 59 20 62 20 44  ?y' ORDER BY b D
0b00: 45 53 43 20 4c 49 4d 49 54 20 35 3b 0a 20 20 2d  ESC LIMIT 5;.  -
0b10: 2d 6d 61 74 63 68 20 32 39 20 32 38 20 32 37 20  -match 29 28 27 
0b20: 32 36 20 32 35 0a 2d 2d 65 6e 64 0a 0a 2d 2d 74  26 25.--end..--t
0b30: 61 73 6b 20 34 20 62 75 69 6c 64 2d 74 34 0a 20  ask 4 build-t4. 
0b40: 20 44 52 4f 50 20 54 41 42 4c 45 20 49 46 20 45   DROP TABLE IF E
0b50: 58 49 53 54 53 20 74 34 3b 0a 20 20 43 52 45 41  XISTS t4;.  CREA
0b60: 54 45 20 54 41 42 4c 45 20 74 34 28 61 20 49 4e  TE TABLE t4(a IN
0b70: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
0b80: 59 2c 20 62 29 3b 0a 20 20 2d 2d 73 6c 65 65 70  Y, b);.  --sleep
0b90: 20 31 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f   1.  INSERT INTO
0ba0: 20 74 34 20 56 41 4c 55 45 53 28 31 2c 20 72 61   t4 VALUES(1, ra
0bb0: 6e 64 6f 6d 62 6c 6f 62 28 32 30 30 30 29 29 3b  ndomblob(2000));
0bc0: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
0bd0: 34 20 56 41 4c 55 45 53 28 32 2c 20 72 61 6e 64  4 VALUES(2, rand
0be0: 6f 6d 62 6c 6f 62 28 31 30 30 30 29 29 3b 0a 20  omblob(1000));. 
0bf0: 20 2d 2d 73 6c 65 65 70 20 31 0a 20 20 49 4e 53   --sleep 1.  INS
0c00: 45 52 54 20 49 4e 54 4f 20 74 34 20 53 45 4c 45  ERT INTO t4 SELE
0c10: 43 54 20 61 2b 32 2c 20 72 61 6e 64 6f 6d 62 6c  CT a+2, randombl
0c20: 6f 62 28 31 35 30 30 29 20 46 52 4f 4d 20 74 34  ob(1500) FROM t4
0c30: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
0c40: 74 34 20 53 45 4c 45 43 54 20 61 2b 34 2c 20 72  t4 SELECT a+4, r
0c50: 61 6e 64 6f 6d 62 6c 6f 62 28 31 35 30 30 29 20  andomblob(1500) 
0c60: 46 52 4f 4d 20 74 34 3b 0a 20 20 49 4e 53 45 52  FROM t4;.  INSER
0c70: 54 20 49 4e 54 4f 20 74 34 20 53 45 4c 45 43 54  T INTO t4 SELECT
0c80: 20 61 2b 38 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62   a+8, randomblob
0c90: 28 31 35 30 30 29 20 46 52 4f 4d 20 74 34 3b 0a  (1500) FROM t4;.
0ca0: 20 20 2d 2d 73 6c 65 65 70 20 31 0a 20 20 49 4e    --sleep 1.  IN
0cb0: 53 45 52 54 20 49 4e 54 4f 20 74 34 20 53 45 4c  SERT INTO t4 SEL
0cc0: 45 43 54 20 61 2b 31 36 2c 20 72 61 6e 64 6f 6d  ECT a+16, random
0cd0: 62 6c 6f 62 28 31 35 30 30 29 20 46 52 4f 4d 20  blob(1500) FROM 
0ce0: 74 34 3b 0a 20 20 2d 2d 73 6c 65 65 70 20 31 0a  t4;.  --sleep 1.
0cf0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 34    INSERT INTO t4
0d00: 20 53 45 4c 45 43 54 20 61 2b 33 32 2c 20 72 61   SELECT a+32, ra
0d10: 6e 64 6f 6d 62 6c 6f 62 28 31 35 30 30 29 20 46  ndomblob(1500) F
0d20: 52 4f 4d 20 74 34 3b 0a 20 20 53 45 4c 45 43 54  ROM t4;.  SELECT
0d30: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
0d40: 34 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 36 34 0a  4;.  --match 64.
0d50: 20 20 53 45 4c 45 43 54 20 61 76 67 28 6c 65 6e    SELECT avg(len
0d60: 67 74 68 28 62 29 29 20 46 52 4f 4d 20 74 34 3b  gth(b)) FROM t4;
0d70: 0a 20 20 2d 2d 6d 61 74 63 68 20 31 35 30 30 2e  .  --match 1500.
0d80: 30 0a 20 20 2d 2d 73 6c 65 65 70 20 32 0a 20 20  0.  --sleep 2.  
0d90: 55 50 44 41 54 45 20 74 34 20 53 45 54 20 62 3d  UPDATE t4 SET b=
0da0: 27 78 27 7c 7c 61 7c 7c 27 79 27 3b 0a 20 20 53  'x'||a||'y';.  S
0db0: 45 4c 45 43 54 20 73 75 6d 28 6c 65 6e 67 74 68  ELECT sum(length
0dc0: 28 62 29 29 20 46 52 4f 4d 20 74 34 3b 0a 20 20  (b)) FROM t4;.  
0dd0: 2d 2d 6d 61 74 63 68 20 32 34 37 0a 20 20 53 45  --match 247.  SE
0de0: 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 34 20 57  LECT a FROM t4 W
0df0: 48 45 52 45 20 62 3d 27 78 31 37 79 27 3b 0a 20  HERE b='x17y';. 
0e00: 20 2d 2d 6d 61 74 63 68 20 31 37 0a 20 20 43 52   --match 17.  CR
0e10: 45 41 54 45 20 49 4e 44 45 58 20 74 34 62 20 4f  EATE INDEX t4b O
0e20: 4e 20 74 34 28 62 29 3b 0a 20 20 53 45 4c 45 43  N t4(b);.  SELEC
0e30: 54 20 61 20 46 52 4f 4d 20 74 34 20 57 48 45 52  T a FROM t4 WHER
0e40: 45 20 62 3d 27 78 31 37 79 27 3b 0a 20 20 2d 2d  E b='x17y';.  --
0e50: 6d 61 74 63 68 20 31 37 0a 20 20 53 45 4c 45 43  match 17.  SELEC
0e60: 54 20 61 20 46 52 4f 4d 20 74 34 20 57 48 45 52  T a FROM t4 WHER
0e70: 45 20 62 20 47 4c 4f 42 20 27 78 32 3f 79 27 20  E b GLOB 'x2?y' 
0e80: 4f 52 44 45 52 20 42 59 20 62 20 44 45 53 43 20  ORDER BY b DESC 
0e90: 4c 49 4d 49 54 20 35 3b 0a 20 20 2d 2d 6d 61 74  LIMIT 5;.  --mat
0ea0: 63 68 20 32 39 20 32 38 20 32 37 20 32 36 20 32  ch 29 28 27 26 2
0eb0: 35 0a 2d 2d 65 6e 64 0a 0a 2d 2d 74 61 73 6b 20  5.--end..--task 
0ec0: 35 20 62 75 69 6c 64 2d 74 35 0a 20 20 44 52 4f  5 build-t5.  DRO
0ed0: 50 20 54 41 42 4c 45 20 49 46 20 45 58 49 53 54  P TABLE IF EXIST
0ee0: 53 20 74 35 3b 0a 20 20 43 52 45 41 54 45 20 54  S t5;.  CREATE T
0ef0: 41 42 4c 45 20 74 35 28 61 20 49 4e 54 45 47 45  ABLE t5(a INTEGE
0f00: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62  R PRIMARY KEY, b
0f10: 29 3b 0a 20 20 2d 2d 73 6c 65 65 70 20 31 0a 20  );.  --sleep 1. 
0f20: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 20   INSERT INTO t5 
0f30: 56 41 4c 55 45 53 28 31 2c 20 72 61 6e 64 6f 6d  VALUES(1, random
0f40: 62 6c 6f 62 28 32 30 30 30 29 29 3b 0a 20 20 49  blob(2000));.  I
0f50: 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 20 56 41  NSERT INTO t5 VA
0f60: 4c 55 45 53 28 32 2c 20 72 61 6e 64 6f 6d 62 6c  LUES(2, randombl
0f70: 6f 62 28 31 30 30 30 29 29 3b 0a 20 20 2d 2d 73  ob(1000));.  --s
0f80: 6c 65 65 70 20 31 0a 20 20 49 4e 53 45 52 54 20  leep 1.  INSERT 
0f90: 49 4e 54 4f 20 74 35 20 53 45 4c 45 43 54 20 61  INTO t5 SELECT a
0fa0: 2b 32 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31  +2, randomblob(1
0fb0: 35 30 30 29 20 46 52 4f 4d 20 74 35 3b 0a 20 20  500) FROM t5;.  
0fc0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 20 53  INSERT INTO t5 S
0fd0: 45 4c 45 43 54 20 61 2b 34 2c 20 72 61 6e 64 6f  ELECT a+4, rando
0fe0: 6d 62 6c 6f 62 28 31 35 30 30 29 20 46 52 4f 4d  mblob(1500) FROM
0ff0: 20 74 35 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e   t5;.  INSERT IN
1000: 54 4f 20 74 35 20 53 45 4c 45 43 54 20 61 2b 38  TO t5 SELECT a+8
1010: 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 35 30  , randomblob(150
1020: 30 29 20 46 52 4f 4d 20 74 35 3b 0a 20 20 2d 2d  0) FROM t5;.  --
1030: 73 6c 65 65 70 20 31 0a 20 20 49 4e 53 45 52 54  sleep 1.  INSERT
1040: 20 49 4e 54 4f 20 74 35 20 53 45 4c 45 43 54 20   INTO t5 SELECT 
1050: 61 2b 31 36 2c 20 72 61 6e 64 6f 6d 62 6c 6f 62  a+16, randomblob
1060: 28 31 35 30 30 29 20 46 52 4f 4d 20 74 35 3b 0a  (1500) FROM t5;.
1070: 20 20 2d 2d 73 6c 65 65 70 20 31 0a 20 20 49 4e    --sleep 1.  IN
1080: 53 45 52 54 20 49 4e 54 4f 20 74 35 20 53 45 4c  SERT INTO t5 SEL
1090: 45 43 54 20 61 2b 33 32 2c 20 72 61 6e 64 6f 6d  ECT a+32, random
10a0: 62 6c 6f 62 28 31 35 30 30 29 20 46 52 4f 4d 20  blob(1500) FROM 
10b0: 74 35 3b 0a 20 20 53 45 4c 45 43 54 20 63 6f 75  t5;.  SELECT cou
10c0: 6e 74 28 2a 29 20 46 52 4f 4d 20 74 35 3b 0a 20  nt(*) FROM t5;. 
10d0: 20 2d 2d 6d 61 74 63 68 20 36 34 0a 20 20 53 45   --match 64.  SE
10e0: 4c 45 43 54 20 61 76 67 28 6c 65 6e 67 74 68 28  LECT avg(length(
10f0: 62 29 29 20 46 52 4f 4d 20 74 35 3b 0a 20 20 2d  b)) FROM t5;.  -
1100: 2d 6d 61 74 63 68 20 31 35 30 30 2e 30 0a 20 20  -match 1500.0.  
1110: 2d 2d 73 6c 65 65 70 20 32 0a 20 20 55 50 44 41  --sleep 2.  UPDA
1120: 54 45 20 74 35 20 53 45 54 20 62 3d 27 78 27 7c  TE t5 SET b='x'|
1130: 7c 61 7c 7c 27 79 27 3b 0a 20 20 53 45 4c 45 43  |a||'y';.  SELEC
1140: 54 20 73 75 6d 28 6c 65 6e 67 74 68 28 62 29 29  T sum(length(b))
1150: 20 46 52 4f 4d 20 74 35 3b 0a 20 20 2d 2d 6d 61   FROM t5;.  --ma
1160: 74 63 68 20 32 34 37 0a 20 20 53 45 4c 45 43 54  tch 247.  SELECT
1170: 20 61 20 46 52 4f 4d 20 74 35 20 57 48 45 52 45   a FROM t5 WHERE
1180: 20 62 3d 27 78 31 37 79 27 3b 0a 20 20 2d 2d 6d   b='x17y';.  --m
1190: 61 74 63 68 20 31 37 0a 20 20 43 52 45 41 54 45  atch 17.  CREATE
11a0: 20 49 4e 44 45 58 20 74 35 62 20 4f 4e 20 74 35   INDEX t5b ON t5
11b0: 28 62 29 3b 0a 20 20 53 45 4c 45 43 54 20 61 20  (b);.  SELECT a 
11c0: 46 52 4f 4d 20 74 35 20 57 48 45 52 45 20 62 3d  FROM t5 WHERE b=
11d0: 27 78 31 37 79 27 3b 0a 20 20 2d 2d 6d 61 74 63  'x17y';.  --matc
11e0: 68 20 31 37 0a 20 20 53 45 4c 45 43 54 20 61 20  h 17.  SELECT a 
11f0: 46 52 4f 4d 20 74 35 20 57 48 45 52 45 20 62 20  FROM t5 WHERE b 
1200: 47 4c 4f 42 20 27 78 32 3f 79 27 20 4f 52 44 45  GLOB 'x2?y' ORDE
1210: 52 20 42 59 20 62 20 44 45 53 43 20 4c 49 4d 49  R BY b DESC LIMI
1220: 54 20 35 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 32  T 5;.  --match 2
1230: 39 20 32 38 20 32 37 20 32 36 20 32 35 0a 2d 2d  9 28 27 26 25.--
1240: 65 6e 64 0a 0a 2d 2d 77 61 69 74 20 61 6c 6c 0a  end..--wait all.
1250: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 2c  SELECT count(*),
1260: 20 73 75 6d 28 6c 65 6e 67 74 68 28 62 29 29 20   sum(length(b)) 
1270: 46 52 4f 4d 20 74 31 3b 0a 2d 2d 6d 61 74 63 68  FROM t1;.--match
1280: 20 36 34 20 32 34 37 0a 53 45 4c 45 43 54 20 63   64 247.SELECT c
1290: 6f 75 6e 74 28 2a 29 2c 20 73 75 6d 28 6c 65 6e  ount(*), sum(len
12a0: 67 74 68 28 62 29 29 20 46 52 4f 4d 20 74 32 3b  gth(b)) FROM t2;
12b0: 0a 2d 2d 6d 61 74 63 68 20 36 34 20 32 34 37 0a  .--match 64 247.
12c0: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 2c  SELECT count(*),
12d0: 20 73 75 6d 28 6c 65 6e 67 74 68 28 62 29 29 20   sum(length(b)) 
12e0: 46 52 4f 4d 20 74 33 3b 0a 2d 2d 6d 61 74 63 68  FROM t3;.--match
12f0: 20 36 34 20 32 34 37 0a 53 45 4c 45 43 54 20 63   64 247.SELECT c
1300: 6f 75 6e 74 28 2a 29 2c 20 73 75 6d 28 6c 65 6e  ount(*), sum(len
1310: 67 74 68 28 62 29 29 20 46 52 4f 4d 20 74 34 3b  gth(b)) FROM t4;
1320: 0a 2d 2d 6d 61 74 63 68 20 36 34 20 32 34 37 0a  .--match 64 247.
1330: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 2c  SELECT count(*),
1340: 20 73 75 6d 28 6c 65 6e 67 74 68 28 62 29 29 20   sum(length(b)) 
1350: 46 52 4f 4d 20 74 35 3b 0a 2d 2d 6d 61 74 63 68  FROM t5;.--match
1360: 20 36 34 20 32 34 37 0a 0a 2d 2d 74 61 73 6b 20   64 247..--task 
1370: 31 0a 20 20 53 45 4c 45 43 54 20 74 31 2e 61 20  1.  SELECT t1.a 
1380: 46 52 4f 4d 20 74 31 2c 20 74 32 0a 20 20 20 57  FROM t1, t2.   W
1390: 48 45 52 45 20 74 32 2e 62 20 47 4c 4f 42 20 27  HERE t2.b GLOB '
13a0: 78 33 3f 79 27 20 41 4e 44 20 74 31 2e 62 3d 28  x3?y' AND t1.b=(
13b0: 27 78 27 7c 7c 28 74 32 2e 61 2b 33 29 7c 7c 27  'x'||(t2.a+3)||'
13c0: 79 27 29 0a 20 20 20 4f 52 44 45 52 20 42 59 20  y').   ORDER BY 
13d0: 74 31 2e 61 20 4c 49 4d 49 54 20 34 0a 20 20 2d  t1.a LIMIT 4.  -
13e0: 2d 6d 61 74 63 68 20 33 33 20 33 34 20 33 35 20  -match 33 34 35 
13f0: 33 36 0a 20 20 53 45 4c 45 43 54 20 74 33 2e 61  36.  SELECT t3.a
1400: 20 46 52 4f 4d 20 74 33 2c 20 74 34 0a 20 20 20   FROM t3, t4.   
1410: 57 48 45 52 45 20 74 34 2e 62 20 47 4c 4f 42 20  WHERE t4.b GLOB 
1420: 27 78 34 3f 79 27 20 41 4e 44 20 74 33 2e 62 3d  'x4?y' AND t3.b=
1430: 28 27 78 27 7c 7c 28 74 34 2e 61 2b 35 29 7c 7c  ('x'||(t4.a+5)||
1440: 27 79 27 29 0a 20 20 20 4f 52 44 45 52 20 42 59  'y').   ORDER BY
1450: 20 74 33 2e 61 20 4c 49 4d 49 54 20 37 0a 20 20   t3.a LIMIT 7.  
1460: 2d 2d 6d 61 74 63 68 20 34 35 20 34 36 20 34 37  --match 45 46 47
1470: 20 34 38 20 34 39 20 35 30 20 35 31 0a 2d 2d 65   48 49 50 51.--e
1480: 6e 64 0a 2d 2d 74 61 73 6b 20 35 0a 20 20 53 45  nd.--task 5.  SE
1490: 4c 45 43 54 20 74 31 2e 61 20 46 52 4f 4d 20 74  LECT t1.a FROM t
14a0: 31 2c 20 74 32 0a 20 20 20 57 48 45 52 45 20 74  1, t2.   WHERE t
14b0: 32 2e 62 20 47 4c 4f 42 20 27 78 33 3f 79 27 20  2.b GLOB 'x3?y' 
14c0: 41 4e 44 20 74 31 2e 62 3d 28 27 78 27 7c 7c 28  AND t1.b=('x'||(
14d0: 74 32 2e 61 2b 33 29 7c 7c 27 79 27 29 0a 20 20  t2.a+3)||'y').  
14e0: 20 4f 52 44 45 52 20 42 59 20 74 31 2e 61 20 4c   ORDER BY t1.a L
14f0: 49 4d 49 54 20 34 0a 20 20 2d 2d 6d 61 74 63 68  IMIT 4.  --match
1500: 20 33 33 20 33 34 20 33 35 20 33 36 0a 20 20 53   33 34 35 36.  S
1510: 45 4c 45 43 54 20 74 33 2e 61 20 46 52 4f 4d 20  ELECT t3.a FROM 
1520: 74 33 2c 20 74 34 0a 20 20 20 57 48 45 52 45 20  t3, t4.   WHERE 
1530: 74 34 2e 62 20 47 4c 4f 42 20 27 78 34 3f 79 27  t4.b GLOB 'x4?y'
1540: 20 41 4e 44 20 74 33 2e 62 3d 28 27 78 27 7c 7c   AND t3.b=('x'||
1550: 28 74 34 2e 61 2b 35 29 7c 7c 27 79 27 29 0a 20  (t4.a+5)||'y'). 
1560: 20 20 4f 52 44 45 52 20 42 59 20 74 33 2e 61 20    ORDER BY t3.a 
1570: 4c 49 4d 49 54 20 37 0a 20 20 2d 2d 6d 61 74 63  LIMIT 7.  --matc
1580: 68 20 34 35 20 34 36 20 34 37 20 34 38 20 34 39  h 45 46 47 48 49
1590: 20 35 30 20 35 31 0a 2d 2d 65 6e 64 0a 2d 2d 74   50 51.--end.--t
15a0: 61 73 6b 20 33 0a 20 20 53 45 4c 45 43 54 20 74  ask 3.  SELECT t
15b0: 31 2e 61 20 46 52 4f 4d 20 74 31 2c 20 74 32 0a  1.a FROM t1, t2.
15c0: 20 20 20 57 48 45 52 45 20 74 32 2e 62 20 47 4c     WHERE t2.b GL
15d0: 4f 42 20 27 78 33 3f 79 27 20 41 4e 44 20 74 31  OB 'x3?y' AND t1
15e0: 2e 62 3d 28 27 78 27 7c 7c 28 74 32 2e 61 2b 33  .b=('x'||(t2.a+3
15f0: 29 7c 7c 27 79 27 29 0a 20 20 20 4f 52 44 45 52  )||'y').   ORDER
1600: 20 42 59 20 74 31 2e 61 20 4c 49 4d 49 54 20 34   BY t1.a LIMIT 4
1610: 0a 20 20 2d 2d 6d 61 74 63 68 20 33 33 20 33 34  .  --match 33 34
1620: 20 33 35 20 33 36 0a 20 20 53 45 4c 45 43 54 20   35 36.  SELECT 
1630: 74 33 2e 61 20 46 52 4f 4d 20 74 33 2c 20 74 34  t3.a FROM t3, t4
1640: 0a 20 20 20 57 48 45 52 45 20 74 34 2e 62 20 47  .   WHERE t4.b G
1650: 4c 4f 42 20 27 78 34 3f 79 27 20 41 4e 44 20 74  LOB 'x4?y' AND t
1660: 33 2e 62 3d 28 27 78 27 7c 7c 28 74 34 2e 61 2b  3.b=('x'||(t4.a+
1670: 35 29 7c 7c 27 79 27 29 0a 20 20 20 4f 52 44 45  5)||'y').   ORDE
1680: 52 20 42 59 20 74 33 2e 61 20 4c 49 4d 49 54 20  R BY t3.a LIMIT 
1690: 37 0a 20 20 2d 2d 6d 61 74 63 68 20 34 35 20 34  7.  --match 45 4
16a0: 36 20 34 37 20 34 38 20 34 39 20 35 30 20 35 31  6 47 48 49 50 51
16b0: 0a 2d 2d 65 6e 64 0a 2d 2d 74 61 73 6b 20 32 0a  .--end.--task 2.
16c0: 20 20 53 45 4c 45 43 54 20 74 31 2e 61 20 46 52    SELECT t1.a FR
16d0: 4f 4d 20 74 31 2c 20 74 32 0a 20 20 20 57 48 45  OM t1, t2.   WHE
16e0: 52 45 20 74 32 2e 62 20 47 4c 4f 42 20 27 78 33  RE t2.b GLOB 'x3
16f0: 3f 79 27 20 41 4e 44 20 74 31 2e 62 3d 28 27 78  ?y' AND t1.b=('x
1700: 27 7c 7c 28 74 32 2e 61 2b 33 29 7c 7c 27 79 27  '||(t2.a+3)||'y'
1710: 29 0a 20 20 20 4f 52 44 45 52 20 42 59 20 74 31  ).   ORDER BY t1
1720: 2e 61 20 4c 49 4d 49 54 20 34 0a 20 20 2d 2d 6d  .a LIMIT 4.  --m
1730: 61 74 63 68 20 33 33 20 33 34 20 33 35 20 33 36  atch 33 34 35 36
1740: 0a 20 20 53 45 4c 45 43 54 20 74 33 2e 61 20 46  .  SELECT t3.a F
1750: 52 4f 4d 20 74 33 2c 20 74 34 0a 20 20 20 57 48  ROM t3, t4.   WH
1760: 45 52 45 20 74 34 2e 62 20 47 4c 4f 42 20 27 78  ERE t4.b GLOB 'x
1770: 34 3f 79 27 20 41 4e 44 20 74 33 2e 62 3d 28 27  4?y' AND t3.b=('
1780: 78 27 7c 7c 28 74 34 2e 61 2b 35 29 7c 7c 27 79  x'||(t4.a+5)||'y
1790: 27 29 0a 20 20 20 4f 52 44 45 52 20 42 59 20 74  ').   ORDER BY t
17a0: 33 2e 61 20 4c 49 4d 49 54 20 37 0a 20 20 2d 2d  3.a LIMIT 7.  --
17b0: 6d 61 74 63 68 20 34 35 20 34 36 20 34 37 20 34  match 45 46 47 4
17c0: 38 20 34 39 20 35 30 20 35 31 0a 2d 2d 65 6e 64  8 49 50 51.--end
17d0: 0a 2d 2d 74 61 73 6b 20 34 0a 20 20 53 45 4c 45  .--task 4.  SELE
17e0: 43 54 20 74 31 2e 61 20 46 52 4f 4d 20 74 31 2c  CT t1.a FROM t1,
17f0: 20 74 32 0a 20 20 20 57 48 45 52 45 20 74 32 2e   t2.   WHERE t2.
1800: 62 20 47 4c 4f 42 20 27 78 33 3f 79 27 20 41 4e  b GLOB 'x3?y' AN
1810: 44 20 74 31 2e 62 3d 28 27 78 27 7c 7c 28 74 32  D t1.b=('x'||(t2
1820: 2e 61 2b 33 29 7c 7c 27 79 27 29 0a 20 20 20 4f  .a+3)||'y').   O
1830: 52 44 45 52 20 42 59 20 74 31 2e 61 20 4c 49 4d  RDER BY t1.a LIM
1840: 49 54 20 34 0a 20 20 2d 2d 6d 61 74 63 68 20 33  IT 4.  --match 3
1850: 33 20 33 34 20 33 35 20 33 36 0a 20 20 53 45 4c  3 34 35 36.  SEL
1860: 45 43 54 20 74 33 2e 61 20 46 52 4f 4d 20 74 33  ECT t3.a FROM t3
1870: 2c 20 74 34 0a 20 20 20 57 48 45 52 45 20 74 34  , t4.   WHERE t4
1880: 2e 62 20 47 4c 4f 42 20 27 78 34 3f 79 27 20 41  .b GLOB 'x4?y' A
1890: 4e 44 20 74 33 2e 62 3d 28 27 78 27 7c 7c 28 74  ND t3.b=('x'||(t
18a0: 34 2e 61 2b 35 29 7c 7c 27 79 27 29 0a 20 20 20  4.a+5)||'y').   
18b0: 4f 52 44 45 52 20 42 59 20 74 33 2e 61 20 4c 49  ORDER BY t3.a LI
18c0: 4d 49 54 20 37 0a 20 20 2d 2d 6d 61 74 63 68 20  MIT 7.  --match 
18d0: 34 35 20 34 36 20 34 37 20 34 38 20 34 39 20 35  45 46 47 48 49 5
18e0: 30 20 35 31 0a 2d 2d 65 6e 64 0a 2d 2d 77 61 69  0 51.--end.--wai
18f0: 74 20 61 6c 6c 0a 0a 2d 2d 74 61 73 6b 20 35 0a  t all..--task 5.
1900: 20 20 44 52 4f 50 20 49 4e 44 45 58 20 74 35 62    DROP INDEX t5b
1910: 3b 0a 20 20 2d 2d 73 6c 65 65 70 20 35 0a 20 20  ;.  --sleep 5.  
1920: 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79  PRAGMA integrity
1930: 5f 63 68 65 63 6b 28 31 30 29 3b 0a 20 20 2d 2d  _check(10);.  --
1940: 6d 61 74 63 68 20 6f 6b 0a 20 20 43 52 45 41 54  match ok.  CREAT
1950: 45 20 49 4e 44 45 58 20 74 35 62 20 4f 4e 20 74  E INDEX t5b ON t
1960: 35 28 62 20 44 45 53 43 29 3b 0a 2d 2d 65 6e 64  5(b DESC);.--end
1970: 0a 2d 2d 74 61 73 6b 20 33 0a 20 20 44 52 4f 50  .--task 3.  DROP
1980: 20 49 4e 44 45 58 20 74 33 62 3b 0a 20 20 2d 2d   INDEX t3b;.  --
1990: 73 6c 65 65 70 20 35 0a 20 20 50 52 41 47 4d 41  sleep 5.  PRAGMA
19a0: 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b   integrity_check
19b0: 28 31 30 29 3b 0a 20 20 2d 2d 6d 61 74 63 68 20  (10);.  --match 
19c0: 6f 6b 0a 20 20 43 52 45 41 54 45 20 49 4e 44 45  ok.  CREATE INDE
19d0: 58 20 74 33 62 20 4f 4e 20 74 33 28 62 20 44 45  X t3b ON t3(b DE
19e0: 53 43 29 3b 0a 2d 2d 65 6e 64 0a 2d 2d 74 61 73  SC);.--end.--tas
19f0: 6b 20 31 0a 20 20 44 52 4f 50 20 49 4e 44 45 58  k 1.  DROP INDEX
1a00: 20 74 31 62 3b 0a 20 20 2d 2d 73 6c 65 65 70 20   t1b;.  --sleep 
1a10: 35 0a 20 20 50 52 41 47 4d 41 20 69 6e 74 65 67  5.  PRAGMA integ
1a20: 72 69 74 79 5f 63 68 65 63 6b 28 31 30 29 3b 0a  rity_check(10);.
1a30: 20 20 2d 2d 6d 61 74 63 68 20 6f 6b 0a 20 20 43    --match ok.  C
1a40: 52 45 41 54 45 20 49 4e 44 45 58 20 74 31 62 20  REATE INDEX t1b 
1a50: 4f 4e 20 74 31 28 62 20 44 45 53 43 29 3b 0a 2d  ON t1(b DESC);.-
1a60: 2d 65 6e 64 0a 2d 2d 74 61 73 6b 20 32 0a 20 20  -end.--task 2.  
1a70: 44 52 4f 50 20 49 4e 44 45 58 20 74 32 62 3b 0a  DROP INDEX t2b;.
1a80: 20 20 2d 2d 73 6c 65 65 70 20 35 0a 20 20 50 52    --sleep 5.  PR
1a90: 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63  AGMA integrity_c
1aa0: 68 65 63 6b 28 31 30 29 3b 0a 20 20 2d 2d 6d 61  heck(10);.  --ma
1ab0: 74 63 68 20 6f 6b 0a 20 20 43 52 45 41 54 45 20  tch ok.  CREATE 
1ac0: 49 4e 44 45 58 20 74 32 62 20 4f 4e 20 74 32 28  INDEX t2b ON t2(
1ad0: 62 20 44 45 53 43 29 3b 0a 2d 2d 65 6e 64 0a 2d  b DESC);.--end.-
1ae0: 2d 74 61 73 6b 20 34 0a 20 20 44 52 4f 50 20 49  -task 4.  DROP I
1af0: 4e 44 45 58 20 74 34 62 3b 0a 20 20 2d 2d 73 6c  NDEX t4b;.  --sl
1b00: 65 65 70 20 35 0a 20 20 50 52 41 47 4d 41 20 69  eep 5.  PRAGMA i
1b10: 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 28 31  ntegrity_check(1
1b20: 30 29 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 6f 6b  0);.  --match ok
1b30: 0a 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  .  CREATE INDEX 
1b40: 74 34 62 20 4f 4e 20 74 34 28 62 20 44 45 53 43  t4b ON t4(b DESC
1b50: 29 3b 0a 2d 2d 65 6e 64 0a 2d 2d 77 61 69 74 20  );.--end.--wait 
1b60: 61 6c 6c 0a 0a 2d 2d 74 61 73 6b 20 31 0a 20 20  all..--task 1.  
1b70: 53 45 4c 45 43 54 20 74 31 2e 61 20 46 52 4f 4d  SELECT t1.a FROM
1b80: 20 74 31 2c 20 74 32 0a 20 20 20 57 48 45 52 45   t1, t2.   WHERE
1b90: 20 74 32 2e 62 20 47 4c 4f 42 20 27 78 33 3f 79   t2.b GLOB 'x3?y
1ba0: 27 20 41 4e 44 20 74 31 2e 62 3d 28 27 78 27 7c  ' AND t1.b=('x'|
1bb0: 7c 28 74 32 2e 61 2b 33 29 7c 7c 27 79 27 29 0a  |(t2.a+3)||'y').
1bc0: 20 20 20 4f 52 44 45 52 20 42 59 20 74 31 2e 61     ORDER BY t1.a
1bd0: 20 4c 49 4d 49 54 20 34 0a 20 20 2d 2d 6d 61 74   LIMIT 4.  --mat
1be0: 63 68 20 33 33 20 33 34 20 33 35 20 33 36 0a 20  ch 33 34 35 36. 
1bf0: 20 53 45 4c 45 43 54 20 74 33 2e 61 20 46 52 4f   SELECT t3.a FRO
1c00: 4d 20 74 33 2c 20 74 34 0a 20 20 20 57 48 45 52  M t3, t4.   WHER
1c10: 45 20 74 34 2e 62 20 47 4c 4f 42 20 27 78 34 3f  E t4.b GLOB 'x4?
1c20: 79 27 20 41 4e 44 20 74 33 2e 62 3d 28 27 78 27  y' AND t3.b=('x'
1c30: 7c 7c 28 74 34 2e 61 2b 35 29 7c 7c 27 79 27 29  ||(t4.a+5)||'y')
1c40: 0a 20 20 20 4f 52 44 45 52 20 42 59 20 74 33 2e  .   ORDER BY t3.
1c50: 61 20 4c 49 4d 49 54 20 37 0a 20 20 2d 2d 6d 61  a LIMIT 7.  --ma
1c60: 74 63 68 20 34 35 20 34 36 20 34 37 20 34 38 20  tch 45 46 47 48 
1c70: 34 39 20 35 30 20 35 31 0a 2d 2d 65 6e 64 0a 2d  49 50 51.--end.-
1c80: 2d 74 61 73 6b 20 35 0a 20 20 53 45 4c 45 43 54  -task 5.  SELECT
1c90: 20 74 31 2e 61 20 46 52 4f 4d 20 74 31 2c 20 74   t1.a FROM t1, t
1ca0: 32 0a 20 20 20 57 48 45 52 45 20 74 32 2e 62 20  2.   WHERE t2.b 
1cb0: 47 4c 4f 42 20 27 78 33 3f 79 27 20 41 4e 44 20  GLOB 'x3?y' AND 
1cc0: 74 31 2e 62 3d 28 27 78 27 7c 7c 28 74 32 2e 61  t1.b=('x'||(t2.a
1cd0: 2b 33 29 7c 7c 27 79 27 29 0a 20 20 20 4f 52 44  +3)||'y').   ORD
1ce0: 45 52 20 42 59 20 74 31 2e 61 20 4c 49 4d 49 54  ER BY t1.a LIMIT
1cf0: 20 34 0a 20 20 2d 2d 6d 61 74 63 68 20 33 33 20   4.  --match 33 
1d00: 33 34 20 33 35 20 33 36 0a 20 20 53 45 4c 45 43  34 35 36.  SELEC
1d10: 54 20 74 33 2e 61 20 46 52 4f 4d 20 74 33 2c 20  T t3.a FROM t3, 
1d20: 74 34 0a 20 20 20 57 48 45 52 45 20 74 34 2e 62  t4.   WHERE t4.b
1d30: 20 47 4c 4f 42 20 27 78 34 3f 79 27 20 41 4e 44   GLOB 'x4?y' AND
1d40: 20 74 33 2e 62 3d 28 27 78 27 7c 7c 28 74 34 2e   t3.b=('x'||(t4.
1d50: 61 2b 35 29 7c 7c 27 79 27 29 0a 20 20 20 4f 52  a+5)||'y').   OR
1d60: 44 45 52 20 42 59 20 74 33 2e 61 20 4c 49 4d 49  DER BY t3.a LIMI
1d70: 54 20 37 0a 20 20 2d 2d 6d 61 74 63 68 20 34 35  T 7.  --match 45
1d80: 20 34 36 20 34 37 20 34 38 20 34 39 20 35 30 20   46 47 48 49 50 
1d90: 35 31 0a 2d 2d 65 6e 64 0a 2d 2d 74 61 73 6b 20  51.--end.--task 
1da0: 33 0a 20 20 53 45 4c 45 43 54 20 74 31 2e 61 20  3.  SELECT t1.a 
1db0: 46 52 4f 4d 20 74 31 2c 20 74 32 0a 20 20 20 57  FROM t1, t2.   W
1dc0: 48 45 52 45 20 74 32 2e 62 20 47 4c 4f 42 20 27  HERE t2.b GLOB '
1dd0: 78 33 3f 79 27 20 41 4e 44 20 74 31 2e 62 3d 28  x3?y' AND t1.b=(
1de0: 27 78 27 7c 7c 28 74 32 2e 61 2b 33 29 7c 7c 27  'x'||(t2.a+3)||'
1df0: 79 27 29 0a 20 20 20 4f 52 44 45 52 20 42 59 20  y').   ORDER BY 
1e00: 74 31 2e 61 20 4c 49 4d 49 54 20 34 0a 20 20 2d  t1.a LIMIT 4.  -
1e10: 2d 6d 61 74 63 68 20 33 33 20 33 34 20 33 35 20  -match 33 34 35 
1e20: 33 36 0a 20 20 53 45 4c 45 43 54 20 74 33 2e 61  36.  SELECT t3.a
1e30: 20 46 52 4f 4d 20 74 33 2c 20 74 34 0a 20 20 20   FROM t3, t4.   
1e40: 57 48 45 52 45 20 74 34 2e 62 20 47 4c 4f 42 20  WHERE t4.b GLOB 
1e50: 27 78 34 3f 79 27 20 41 4e 44 20 74 33 2e 62 3d  'x4?y' AND t3.b=
1e60: 28 27 78 27 7c 7c 28 74 34 2e 61 2b 35 29 7c 7c  ('x'||(t4.a+5)||
1e70: 27 79 27 29 0a 20 20 20 4f 52 44 45 52 20 42 59  'y').   ORDER BY
1e80: 20 74 33 2e 61 20 4c 49 4d 49 54 20 37 0a 20 20   t3.a LIMIT 7.  
1e90: 2d 2d 6d 61 74 63 68 20 34 35 20 34 36 20 34 37  --match 45 46 47
1ea0: 20 34 38 20 34 39 20 35 30 20 35 31 0a 2d 2d 65   48 49 50 51.--e
1eb0: 6e 64 0a 2d 2d 74 61 73 6b 20 32 0a 20 20 53 45  nd.--task 2.  SE
1ec0: 4c 45 43 54 20 74 31 2e 61 20 46 52 4f 4d 20 74  LECT t1.a FROM t
1ed0: 31 2c 20 74 32 0a 20 20 20 57 48 45 52 45 20 74  1, t2.   WHERE t
1ee0: 32 2e 62 20 47 4c 4f 42 20 27 78 33 3f 79 27 20  2.b GLOB 'x3?y' 
1ef0: 41 4e 44 20 74 31 2e 62 3d 28 27 78 27 7c 7c 28  AND t1.b=('x'||(
1f00: 74 32 2e 61 2b 33 29 7c 7c 27 79 27 29 0a 20 20  t2.a+3)||'y').  
1f10: 20 4f 52 44 45 52 20 42 59 20 74 31 2e 61 20 4c   ORDER BY t1.a L
1f20: 49 4d 49 54 20 34 0a 20 20 2d 2d 6d 61 74 63 68  IMIT 4.  --match
1f30: 20 33 33 20 33 34 20 33 35 20 33 36 0a 20 20 53   33 34 35 36.  S
1f40: 45 4c 45 43 54 20 74 33 2e 61 20 46 52 4f 4d 20  ELECT t3.a FROM 
1f50: 74 33 2c 20 74 34 0a 20 20 20 57 48 45 52 45 20  t3, t4.   WHERE 
1f60: 74 34 2e 62 20 47 4c 4f 42 20 27 78 34 3f 79 27  t4.b GLOB 'x4?y'
1f70: 20 41 4e 44 20 74 33 2e 62 3d 28 27 78 27 7c 7c   AND t3.b=('x'||
1f80: 28 74 34 2e 61 2b 35 29 7c 7c 27 79 27 29 0a 20  (t4.a+5)||'y'). 
1f90: 20 20 4f 52 44 45 52 20 42 59 20 74 33 2e 61 20    ORDER BY t3.a 
1fa0: 4c 49 4d 49 54 20 37 0a 20 20 2d 2d 6d 61 74 63  LIMIT 7.  --matc
1fb0: 68 20 34 35 20 34 36 20 34 37 20 34 38 20 34 39  h 45 46 47 48 49
1fc0: 20 35 30 20 35 31 0a 2d 2d 65 6e 64 0a 2d 2d 74   50 51.--end.--t
1fd0: 61 73 6b 20 34 0a 20 20 53 45 4c 45 43 54 20 74  ask 4.  SELECT t
1fe0: 31 2e 61 20 46 52 4f 4d 20 74 31 2c 20 74 32 0a  1.a FROM t1, t2.
1ff0: 20 20 20 57 48 45 52 45 20 74 32 2e 62 20 47 4c     WHERE t2.b GL
2000: 4f 42 20 27 78 33 3f 79 27 20 41 4e 44 20 74 31  OB 'x3?y' AND t1
2010: 2e 62 3d 28 27 78 27 7c 7c 28 74 32 2e 61 2b 33  .b=('x'||(t2.a+3
2020: 29 7c 7c 27 79 27 29 0a 20 20 20 4f 52 44 45 52  )||'y').   ORDER
2030: 20 42 59 20 74 31 2e 61 20 4c 49 4d 49 54 20 34   BY t1.a LIMIT 4
2040: 0a 20 20 2d 2d 6d 61 74 63 68 20 33 33 20 33 34  .  --match 33 34
2050: 20 33 35 20 33 36 0a 20 20 53 45 4c 45 43 54 20   35 36.  SELECT 
2060: 74 33 2e 61 20 46 52 4f 4d 20 74 33 2c 20 74 34  t3.a FROM t3, t4
2070: 0a 20 20 20 57 48 45 52 45 20 74 34 2e 62 20 47  .   WHERE t4.b G
2080: 4c 4f 42 20 27 78 34 3f 79 27 20 41 4e 44 20 74  LOB 'x4?y' AND t
2090: 33 2e 62 3d 28 27 78 27 7c 7c 28 74 34 2e 61 2b  3.b=('x'||(t4.a+
20a0: 35 29 7c 7c 27 79 27 29 0a 20 20 20 4f 52 44 45  5)||'y').   ORDE
20b0: 52 20 42 59 20 74 33 2e 61 20 4c 49 4d 49 54 20  R BY t3.a LIMIT 
20c0: 37 0a 20 20 2d 2d 6d 61 74 63 68 20 34 35 20 34  7.  --match 45 4
20d0: 36 20 34 37 20 34 38 20 34 39 20 35 30 20 35 31  6 47 48 49 50 51
20e0: 0a 2d 2d 65 6e 64 0a 2d 2d 77 61 69 74 20 61 6c  .--end.--wait al
20f0: 6c 0a 0a 56 41 43 55 55 4d 3b 0a 50 52 41 47 4d  l..VACUUM;.PRAGM
2100: 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63  A integrity_chec
2110: 6b 28 31 30 29 3b 0a 2d 2d 6d 61 74 63 68 20 6f  k(10);.--match o
2120: 6b 0a 0a 2d 2d 74 61 73 6b 20 31 0a 20 20 55 50  k..--task 1.  UP
2130: 44 41 54 45 20 74 31 20 53 45 54 20 62 3d 72 61  DATE t1 SET b=ra
2140: 6e 64 6f 6d 62 6c 6f 62 28 32 30 30 30 30 29 3b  ndomblob(20000);
2150: 0a 20 20 2d 2d 73 6c 65 65 70 20 35 0a 20 20 55  .  --sleep 5.  U
2160: 50 44 41 54 45 20 74 31 20 53 45 54 20 62 3d 27  PDATE t1 SET b='
2170: 78 27 7c 7c 61 7c 7c 27 79 27 3b 0a 20 20 53 45  x'||a||'y';.  SE
2180: 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 31 20 57  LECT a FROM t1 W
2190: 48 45 52 45 20 62 3d 27 78 36 33 79 27 3b 0a 20  HERE b='x63y';. 
21a0: 20 2d 2d 6d 61 74 63 68 20 36 33 0a 2d 2d 65 6e   --match 63.--en
21b0: 64 0a 2d 2d 74 61 73 6b 20 32 0a 20 20 55 50 44  d.--task 2.  UPD
21c0: 41 54 45 20 74 32 20 53 45 54 20 62 3d 72 61 6e  ATE t2 SET b=ran
21d0: 64 6f 6d 62 6c 6f 62 28 32 30 30 30 30 29 3b 0a  domblob(20000);.
21e0: 20 20 2d 2d 73 6c 65 65 70 20 35 0a 20 20 55 50    --sleep 5.  UP
21f0: 44 41 54 45 20 74 32 20 53 45 54 20 62 3d 27 78  DATE t2 SET b='x
2200: 27 7c 7c 61 7c 7c 27 79 27 3b 0a 20 20 53 45 4c  '||a||'y';.  SEL
2210: 45 43 54 20 61 20 46 52 4f 4d 20 74 32 20 57 48  ECT a FROM t2 WH
2220: 45 52 45 20 62 3d 27 78 36 33 79 27 3b 0a 20 20  ERE b='x63y';.  
2230: 2d 2d 6d 61 74 63 68 20 36 33 0a 2d 2d 65 6e 64  --match 63.--end
2240: 0a 2d 2d 74 61 73 6b 20 33 0a 20 20 55 50 44 41  .--task 3.  UPDA
2250: 54 45 20 74 33 20 53 45 54 20 62 3d 72 61 6e 64  TE t3 SET b=rand
2260: 6f 6d 62 6c 6f 62 28 32 30 30 30 30 29 3b 0a 20  omblob(20000);. 
2270: 20 2d 2d 73 6c 65 65 70 20 35 0a 20 20 55 50 44   --sleep 5.  UPD
2280: 41 54 45 20 74 33 20 53 45 54 20 62 3d 27 78 27  ATE t3 SET b='x'
2290: 7c 7c 61 7c 7c 27 79 27 3b 0a 20 20 53 45 4c 45  ||a||'y';.  SELE
22a0: 43 54 20 61 20 46 52 4f 4d 20 74 33 20 57 48 45  CT a FROM t3 WHE
22b0: 52 45 20 62 3d 27 78 36 33 79 27 3b 0a 20 20 2d  RE b='x63y';.  -
22c0: 2d 6d 61 74 63 68 20 36 33 0a 2d 2d 65 6e 64 0a  -match 63.--end.
22d0: 2d 2d 74 61 73 6b 20 34 0a 20 20 55 50 44 41 54  --task 4.  UPDAT
22e0: 45 20 74 34 20 53 45 54 20 62 3d 72 61 6e 64 6f  E t4 SET b=rando
22f0: 6d 62 6c 6f 62 28 32 30 30 30 30 29 3b 0a 20 20  mblob(20000);.  
2300: 2d 2d 73 6c 65 65 70 20 35 0a 20 20 55 50 44 41  --sleep 5.  UPDA
2310: 54 45 20 74 34 20 53 45 54 20 62 3d 27 78 27 7c  TE t4 SET b='x'|
2320: 7c 61 7c 7c 27 79 27 3b 0a 20 20 53 45 4c 45 43  |a||'y';.  SELEC
2330: 54 20 61 20 46 52 4f 4d 20 74 34 20 57 48 45 52  T a FROM t4 WHER
2340: 45 20 62 3d 27 78 36 33 79 27 3b 0a 20 20 2d 2d  E b='x63y';.  --
2350: 6d 61 74 63 68 20 36 33 0a 2d 2d 65 6e 64 0a 2d  match 63.--end.-
2360: 2d 74 61 73 6b 20 35 0a 20 20 55 50 44 41 54 45  -task 5.  UPDATE
2370: 20 74 35 20 53 45 54 20 62 3d 72 61 6e 64 6f 6d   t5 SET b=random
2380: 62 6c 6f 62 28 32 30 30 30 30 29 3b 0a 20 20 2d  blob(20000);.  -
2390: 2d 73 6c 65 65 70 20 35 0a 20 20 55 50 44 41 54  -sleep 5.  UPDAT
23a0: 45 20 74 35 20 53 45 54 20 62 3d 27 78 27 7c 7c  E t5 SET b='x'||
23b0: 61 7c 7c 27 79 27 3b 0a 20 20 53 45 4c 45 43 54  a||'y';.  SELECT
23c0: 20 61 20 46 52 4f 4d 20 74 35 20 57 48 45 52 45   a FROM t5 WHERE
23d0: 20 62 3d 27 78 36 33 79 27 3b 0a 20 20 2d 2d 6d   b='x63y';.  --m
23e0: 61 74 63 68 20 36 33 0a 2d 2d 65 6e 64 0a 2d 2d  atch 63.--end.--
23f0: 77 61 69 74 20 61 6c 6c 0a 0a 2d 2d 74 61 73 6b  wait all..--task
2400: 20 31 0a 20 20 53 45 4c 45 43 54 20 74 31 2e 61   1.  SELECT t1.a
2410: 20 46 52 4f 4d 20 74 31 2c 20 74 32 0a 20 20 20   FROM t1, t2.   
2420: 57 48 45 52 45 20 74 32 2e 62 20 47 4c 4f 42 20  WHERE t2.b GLOB 
2430: 27 78 33 3f 79 27 20 41 4e 44 20 74 31 2e 62 3d  'x3?y' AND t1.b=
2440: 28 27 78 27 7c 7c 28 74 32 2e 61 2b 33 29 7c 7c  ('x'||(t2.a+3)||
2450: 27 79 27 29 0a 20 20 20 4f 52 44 45 52 20 42 59  'y').   ORDER BY
2460: 20 74 31 2e 61 20 4c 49 4d 49 54 20 34 0a 20 20   t1.a LIMIT 4.  
2470: 2d 2d 6d 61 74 63 68 20 33 33 20 33 34 20 33 35  --match 33 34 35
2480: 20 33 36 0a 20 20 53 45 4c 45 43 54 20 74 33 2e   36.  SELECT t3.
2490: 61 20 46 52 4f 4d 20 74 33 2c 20 74 34 0a 20 20  a FROM t3, t4.  
24a0: 20 57 48 45 52 45 20 74 34 2e 62 20 47 4c 4f 42   WHERE t4.b GLOB
24b0: 20 27 78 34 3f 79 27 20 41 4e 44 20 74 33 2e 62   'x4?y' AND t3.b
24c0: 3d 28 27 78 27 7c 7c 28 74 34 2e 61 2b 35 29 7c  =('x'||(t4.a+5)|
24d0: 7c 27 79 27 29 0a 20 20 20 4f 52 44 45 52 20 42  |'y').   ORDER B
24e0: 59 20 74 33 2e 61 20 4c 49 4d 49 54 20 37 0a 20  Y t3.a LIMIT 7. 
24f0: 20 2d 2d 6d 61 74 63 68 20 34 35 20 34 36 20 34   --match 45 46 4
2500: 37 20 34 38 20 34 39 20 35 30 20 35 31 0a 2d 2d  7 48 49 50 51.--
2510: 65 6e 64 0a 2d 2d 74 61 73 6b 20 35 0a 20 20 53  end.--task 5.  S
2520: 45 4c 45 43 54 20 74 31 2e 61 20 46 52 4f 4d 20  ELECT t1.a FROM 
2530: 74 31 2c 20 74 32 0a 20 20 20 57 48 45 52 45 20  t1, t2.   WHERE 
2540: 74 32 2e 62 20 47 4c 4f 42 20 27 78 33 3f 79 27  t2.b GLOB 'x3?y'
2550: 20 41 4e 44 20 74 31 2e 62 3d 28 27 78 27 7c 7c   AND t1.b=('x'||
2560: 28 74 32 2e 61 2b 33 29 7c 7c 27 79 27 29 0a 20  (t2.a+3)||'y'). 
2570: 20 20 4f 52 44 45 52 20 42 59 20 74 31 2e 61 20    ORDER BY t1.a 
2580: 4c 49 4d 49 54 20 34 0a 20 20 2d 2d 6d 61 74 63  LIMIT 4.  --matc
2590: 68 20 33 33 20 33 34 20 33 35 20 33 36 0a 20 20  h 33 34 35 36.  
25a0: 53 45 4c 45 43 54 20 74 33 2e 61 20 46 52 4f 4d  SELECT t3.a FROM
25b0: 20 74 33 2c 20 74 34 0a 20 20 20 57 48 45 52 45   t3, t4.   WHERE
25c0: 20 74 34 2e 62 20 47 4c 4f 42 20 27 78 34 3f 79   t4.b GLOB 'x4?y
25d0: 27 20 41 4e 44 20 74 33 2e 62 3d 28 27 78 27 7c  ' AND t3.b=('x'|
25e0: 7c 28 74 34 2e 61 2b 35 29 7c 7c 27 79 27 29 0a  |(t4.a+5)||'y').
25f0: 20 20 20 4f 52 44 45 52 20 42 59 20 74 33 2e 61     ORDER BY t3.a
2600: 20 4c 49 4d 49 54 20 37 0a 20 20 2d 2d 6d 61 74   LIMIT 7.  --mat
2610: 63 68 20 34 35 20 34 36 20 34 37 20 34 38 20 34  ch 45 46 47 48 4
2620: 39 20 35 30 20 35 31 0a 2d 2d 65 6e 64 0a 2d 2d  9 50 51.--end.--
2630: 74 61 73 6b 20 33 0a 20 20 53 45 4c 45 43 54 20  task 3.  SELECT 
2640: 74 31 2e 61 20 46 52 4f 4d 20 74 31 2c 20 74 32  t1.a FROM t1, t2
2650: 0a 20 20 20 57 48 45 52 45 20 74 32 2e 62 20 47  .   WHERE t2.b G
2660: 4c 4f 42 20 27 78 33 3f 79 27 20 41 4e 44 20 74  LOB 'x3?y' AND t
2670: 31 2e 62 3d 28 27 78 27 7c 7c 28 74 32 2e 61 2b  1.b=('x'||(t2.a+
2680: 33 29 7c 7c 27 79 27 29 0a 20 20 20 4f 52 44 45  3)||'y').   ORDE
2690: 52 20 42 59 20 74 31 2e 61 20 4c 49 4d 49 54 20  R BY t1.a LIMIT 
26a0: 34 0a 20 20 2d 2d 6d 61 74 63 68 20 33 33 20 33  4.  --match 33 3
26b0: 34 20 33 35 20 33 36 0a 20 20 53 45 4c 45 43 54  4 35 36.  SELECT
26c0: 20 74 33 2e 61 20 46 52 4f 4d 20 74 33 2c 20 74   t3.a FROM t3, t
26d0: 34 0a 20 20 20 57 48 45 52 45 20 74 34 2e 62 20  4.   WHERE t4.b 
26e0: 47 4c 4f 42 20 27 78 34 3f 79 27 20 41 4e 44 20  GLOB 'x4?y' AND 
26f0: 74 33 2e 62 3d 28 27 78 27 7c 7c 28 74 34 2e 61  t3.b=('x'||(t4.a
2700: 2b 35 29 7c 7c 27 79 27 29 0a 20 20 20 4f 52 44  +5)||'y').   ORD
2710: 45 52 20 42 59 20 74 33 2e 61 20 4c 49 4d 49 54  ER BY t3.a LIMIT
2720: 20 37 0a 20 20 2d 2d 6d 61 74 63 68 20 34 35 20   7.  --match 45 
2730: 34 36 20 34 37 20 34 38 20 34 39 20 35 30 20 35  46 47 48 49 50 5
2740: 31 0a 2d 2d 65 6e 64 0a 2d 2d 74 61 73 6b 20 32  1.--end.--task 2
2750: 0a 20 20 53 45 4c 45 43 54 20 74 31 2e 61 20 46  .  SELECT t1.a F
2760: 52 4f 4d 20 74 31 2c 20 74 32 0a 20 20 20 57 48  ROM t1, t2.   WH
2770: 45 52 45 20 74 32 2e 62 20 47 4c 4f 42 20 27 78  ERE t2.b GLOB 'x
2780: 33 3f 79 27 20 41 4e 44 20 74 31 2e 62 3d 28 27  3?y' AND t1.b=('
2790: 78 27 7c 7c 28 74 32 2e 61 2b 33 29 7c 7c 27 79  x'||(t2.a+3)||'y
27a0: 27 29 0a 20 20 20 4f 52 44 45 52 20 42 59 20 74  ').   ORDER BY t
27b0: 31 2e 61 20 4c 49 4d 49 54 20 34 0a 20 20 2d 2d  1.a LIMIT 4.  --
27c0: 6d 61 74 63 68 20 33 33 20 33 34 20 33 35 20 33  match 33 34 35 3
27d0: 36 0a 20 20 53 45 4c 45 43 54 20 74 33 2e 61 20  6.  SELECT t3.a 
27e0: 46 52 4f 4d 20 74 33 2c 20 74 34 0a 20 20 20 57  FROM t3, t4.   W
27f0: 48 45 52 45 20 74 34 2e 62 20 47 4c 4f 42 20 27  HERE t4.b GLOB '
2800: 78 34 3f 79 27 20 41 4e 44 20 74 33 2e 62 3d 28  x4?y' AND t3.b=(
2810: 27 78 27 7c 7c 28 74 34 2e 61 2b 35 29 7c 7c 27  'x'||(t4.a+5)||'
2820: 79 27 29 0a 20 20 20 4f 52 44 45 52 20 42 59 20  y').   ORDER BY 
2830: 74 33 2e 61 20 4c 49 4d 49 54 20 37 0a 20 20 2d  t3.a LIMIT 7.  -
2840: 2d 6d 61 74 63 68 20 34 35 20 34 36 20 34 37 20  -match 45 46 47 
2850: 34 38 20 34 39 20 35 30 20 35 31 0a 2d 2d 65 6e  48 49 50 51.--en
2860: 64 0a 2d 2d 74 61 73 6b 20 34 0a 20 20 53 45 4c  d.--task 4.  SEL
2870: 45 43 54 20 74 31 2e 61 20 46 52 4f 4d 20 74 31  ECT t1.a FROM t1
2880: 2c 20 74 32 0a 20 20 20 57 48 45 52 45 20 74 32  , t2.   WHERE t2
2890: 2e 62 20 47 4c 4f 42 20 27 78 33 3f 79 27 20 41  .b GLOB 'x3?y' A
28a0: 4e 44 20 74 31 2e 62 3d 28 27 78 27 7c 7c 28 74  ND t1.b=('x'||(t
28b0: 32 2e 61 2b 33 29 7c 7c 27 79 27 29 0a 20 20 20  2.a+3)||'y').   
28c0: 4f 52 44 45 52 20 42 59 20 74 31 2e 61 20 4c 49  ORDER BY t1.a LI
28d0: 4d 49 54 20 34 0a 20 20 2d 2d 6d 61 74 63 68 20  MIT 4.  --match 
28e0: 33 33 20 33 34 20 33 35 20 33 36 0a 20 20 53 45  33 34 35 36.  SE
28f0: 4c 45 43 54 20 74 33 2e 61 20 46 52 4f 4d 20 74  LECT t3.a FROM t
2900: 33 2c 20 74 34 0a 20 20 20 57 48 45 52 45 20 74  3, t4.   WHERE t
2910: 34 2e 62 20 47 4c 4f 42 20 27 78 34 3f 79 27 20  4.b GLOB 'x4?y' 
2920: 41 4e 44 20 74 33 2e 62 3d 28 27 78 27 7c 7c 28  AND t3.b=('x'||(
2930: 74 34 2e 61 2b 35 29 7c 7c 27 79 27 29 0a 20 20  t4.a+5)||'y').  
2940: 20 4f 52 44 45 52 20 42 59 20 74 33 2e 61 20 4c   ORDER BY t3.a L
2950: 49 4d 49 54 20 37 0a 20 20 2d 2d 6d 61 74 63 68  IMIT 7.  --match
2960: 20 34 35 20 34 36 20 34 37 20 34 38 20 34 39 20   45 46 47 48 49 
2970: 35 30 20 35 31 0a 2d 2d 65 6e 64 0a 2d 2d 77 61  50 51.--end.--wa
2980: 69 74 20 61 6c 6c 0a                             it all.