/ Hex Artifact Content
Login

Artifact f4ef05adcd15d60e5d2bd654204f2c008b519df8:


0000: 2f 2a 0a 2a 2a 20 54 68 69 73 20 73 63 72 69 70  /*.** This scrip
0010: 74 20 69 73 20 63 61 6c 6c 65 64 20 66 72 6f 6d  t is called from
0020: 20 63 72 61 73 68 30 31 2e 74 65 73 74 20 61 6e   crash01.test an
0030: 64 20 63 6f 6e 66 69 67 30 32 2e 74 65 73 74 20  d config02.test 
0040: 61 6e 64 20 70 65 72 68 61 70 73 20 6f 74 68 65  and perhaps othe
0050: 72 0a 2a 2a 20 73 63 72 69 70 74 2e 20 20 41 66  r.** script.  Af
0060: 74 65 72 20 74 68 65 20 64 61 74 61 62 61 73 65  ter the database
0070: 20 66 69 6c 65 20 68 61 73 20 62 65 65 6e 20 73   file has been s
0080: 65 74 20 75 70 2c 20 6d 61 6b 65 20 61 20 62 69  et up, make a bi
0090: 67 20 72 6f 6c 6c 62 61 63 6b 20 0a 2a 2a 20 6a  g rollback .** j
00a0: 6f 75 72 6e 61 6c 20 69 6e 20 63 6c 69 65 6e 74  ournal in client
00b0: 20 31 2c 20 74 68 65 6e 20 63 72 61 73 68 20 63   1, then crash c
00c0: 6c 69 65 6e 74 20 31 2e 0a 2a 2a 20 54 68 65 6e  lient 1..** Then
00d0: 20 69 6e 20 74 68 65 20 6f 74 68 65 72 20 63 6c   in the other cl
00e0: 69 65 6e 74 73 2c 20 64 6f 20 61 6e 20 69 6e 74  ients, do an int
00f0: 65 67 72 69 74 79 20 63 68 65 63 6b 2e 0a 2a 2f  egrity check..*/
0100: 0a 2d 2d 74 61 73 6b 20 31 20 6c 65 61 76 65 2d  .--task 1 leave-
0110: 68 6f 74 2d 6a 6f 75 72 6e 61 6c 0a 20 20 2d 2d  hot-journal.  --
0120: 73 6c 65 65 70 20 35 0a 20 20 2d 2d 66 69 6e 69  sleep 5.  --fini
0130: 73 68 0a 20 20 50 52 41 47 4d 41 20 63 61 63 68  sh.  PRAGMA cach
0140: 65 5f 73 69 7a 65 3d 31 30 3b 0a 20 20 42 45 47  e_size=10;.  BEG
0150: 49 4e 3b 0a 20 20 55 50 44 41 54 45 20 74 31 20  IN;.  UPDATE t1 
0160: 53 45 54 20 62 3d 72 61 6e 64 6f 6d 62 6c 6f 62  SET b=randomblob
0170: 28 32 30 30 30 30 29 3b 0a 20 20 55 50 44 41 54  (20000);.  UPDAT
0180: 45 20 74 32 20 53 45 54 20 62 3d 72 61 6e 64 6f  E t2 SET b=rando
0190: 6d 62 6c 6f 62 28 32 30 30 30 30 29 3b 0a 20 20  mblob(20000);.  
01a0: 55 50 44 41 54 45 20 74 33 20 53 45 54 20 62 3d  UPDATE t3 SET b=
01b0: 72 61 6e 64 6f 6d 62 6c 6f 62 28 32 30 30 30 30  randomblob(20000
01c0: 29 3b 0a 20 20 55 50 44 41 54 45 20 74 34 20 53  );.  UPDATE t4 S
01d0: 45 54 20 62 3d 72 61 6e 64 6f 6d 62 6c 6f 62 28  ET b=randomblob(
01e0: 32 30 30 30 30 29 3b 0a 20 20 55 50 44 41 54 45  20000);.  UPDATE
01f0: 20 74 35 20 53 45 54 20 62 3d 72 61 6e 64 6f 6d   t5 SET b=random
0200: 62 6c 6f 62 28 32 30 30 30 30 29 3b 0a 20 20 55  blob(20000);.  U
0210: 50 44 41 54 45 20 74 31 20 53 45 54 20 62 3d 4e  PDATE t1 SET b=N
0220: 55 4c 4c 3b 0a 20 20 55 50 44 41 54 45 20 74 32  ULL;.  UPDATE t2
0230: 20 53 45 54 20 62 3d 4e 55 4c 4c 3b 0a 20 20 55   SET b=NULL;.  U
0240: 50 44 41 54 45 20 74 33 20 53 45 54 20 62 3d 4e  PDATE t3 SET b=N
0250: 55 4c 4c 3b 0a 20 20 55 50 44 41 54 45 20 74 34  ULL;.  UPDATE t4
0260: 20 53 45 54 20 62 3d 4e 55 4c 4c 3b 0a 20 20 55   SET b=NULL;.  U
0270: 50 44 41 54 45 20 74 35 20 53 45 54 20 62 3d 4e  PDATE t5 SET b=N
0280: 55 4c 4c 3b 0a 20 20 2d 2d 70 72 69 6e 74 20 54  ULL;.  --print T
0290: 61 73 6b 20 6f 6e 65 20 63 72 61 73 68 69 6e 67  ask one crashing
02a0: 20 61 6e 20 69 6e 63 6f 6d 70 6c 65 74 65 20 74   an incomplete t
02b0: 72 61 6e 73 61 63 74 69 6f 6e 0a 20 20 2d 2d 65  ransaction.  --e
02c0: 78 69 74 20 31 0a 2d 2d 65 6e 64 0a 2d 2d 74 61  xit 1.--end.--ta
02d0: 73 6b 20 32 20 69 6e 74 65 67 72 69 74 79 5f 63  sk 2 integrity_c
02e0: 68 65 63 6b 2d 32 0a 20 20 53 45 4c 45 43 54 20  heck-2.  SELECT 
02f0: 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31  count(*) FROM t1
0300: 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 36 34 0a 20  ;.  --match 64. 
0310: 20 2d 2d 73 6c 65 65 70 20 31 30 30 0a 20 20 50   --sleep 100.  P
0320: 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f  RAGMA integrity_
0330: 63 68 65 63 6b 28 31 30 29 3b 0a 20 20 2d 2d 6d  check(10);.  --m
0340: 61 74 63 68 20 6f 6b 0a 2d 2d 65 6e 64 0a 2d 2d  atch ok.--end.--
0350: 74 61 73 6b 20 33 20 69 6e 74 65 67 72 69 74 79  task 3 integrity
0360: 5f 63 68 65 63 6b 2d 33 0a 20 20 53 45 4c 45 43  _check-3.  SELEC
0370: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
0380: 74 31 3b 0a 20 20 2d 2d 6d 61 74 63 68 20 36 34  t1;.  --match 64
0390: 0a 20 20 2d 2d 73 6c 65 65 70 20 31 30 30 0a 20  .  --sleep 100. 
03a0: 20 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74   PRAGMA integrit
03b0: 79 5f 63 68 65 63 6b 28 31 30 29 3b 0a 20 20 2d  y_check(10);.  -
03c0: 2d 6d 61 74 63 68 20 6f 6b 0a 2d 2d 65 6e 64 0a  -match ok.--end.
03d0: 2d 2d 74 61 73 6b 20 34 20 69 6e 74 65 67 72 69  --task 4 integri
03e0: 74 79 5f 63 68 65 63 6b 2d 34 0a 20 20 53 45 4c  ty_check-4.  SEL
03f0: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
0400: 4d 20 74 31 3b 0a 20 20 2d 2d 6d 61 74 63 68 20  M t1;.  --match 
0410: 36 34 0a 20 20 2d 2d 73 6c 65 65 70 20 31 30 30  64.  --sleep 100
0420: 0a 20 20 50 52 41 47 4d 41 20 69 6e 74 65 67 72  .  PRAGMA integr
0430: 69 74 79 5f 63 68 65 63 6b 28 31 30 29 3b 0a 20  ity_check(10);. 
0440: 20 2d 2d 6d 61 74 63 68 20 6f 6b 0a 2d 2d 65 6e   --match ok.--en
0450: 64 0a 2d 2d 74 61 73 6b 20 35 20 69 6e 74 65 67  d.--task 5 integ
0460: 72 69 74 79 5f 63 68 65 63 6b 2d 35 0a 20 20 53  rity_check-5.  S
0470: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
0480: 52 4f 4d 20 74 31 3b 0a 20 20 2d 2d 6d 61 74 63  ROM t1;.  --matc
0490: 68 20 36 34 0a 20 20 2d 2d 73 6c 65 65 70 20 31  h 64.  --sleep 1
04a0: 30 30 0a 20 20 50 52 41 47 4d 41 20 69 6e 74 65  00.  PRAGMA inte
04b0: 67 72 69 74 79 5f 63 68 65 63 6b 28 31 30 29 3b  grity_check(10);
04c0: 0a 20 20 2d 2d 6d 61 74 63 68 20 6f 6b 0a 2d 2d  .  --match ok.--
04d0: 65 6e 64 0a 2d 2d 77 61 69 74 20 61 6c 6c 0a     end.--wait all.