/ Hex Artifact Content
Login

Artifact c229bcdb45518a89e1d208a21343e061503460ac69fae1539320a89f572eb634:


0000: 23 20 32 30 31 38 2d 31 32 2d 31 32 0a 23 0a 23  # 2018-12-12.#.#
0010: 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73 63   The author disc
0020: 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20  laims copyright 
0030: 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20 63  to this source c
0040: 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f  ode.  In place o
0050: 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69  f.# a legal noti
0060: 63 65 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c  ce, here is a bl
0070: 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20 20 4d  essing:.#.#    M
0080: 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61  ay you do good a
0090: 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23 20 20  nd not evil..#  
00a0: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
00b0: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
00c0: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
00d0: 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20 20 20  ive others..#   
00e0: 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20 66   May you share f
00f0: 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b  reely, never tak
0100: 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f  ing more than yo
0110: 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a 2a 2a  u give..#.#*****
0120: 2a 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 0a 23 20 0a 23 20 54 65 73 74 20 63 61 73  **.# .# Test cas
0170: 65 73 20 66 6f 75 6e 64 20 62 79 20 4d 61 74 74  es found by Matt
0180: 68 65 77 20 44 65 6e 74 6f 6e 27 73 20 66 75 7a  hew Denton's fuz
0190: 7a 65 72 20 61 74 20 43 68 72 6f 6d 65 2e 0a 23  zer at Chrome..#
01a0: 0a 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b  ...set testdir [
01b0: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72  file dirname $ar
01c0: 67 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73  gv0].source $tes
01d0: 74 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a  tdir/tester.tcl.
01e0: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
01f0: 20 66 75 7a 7a 34 2d 31 30 30 20 7b 0a 20 20 43   fuzz4-100 {.  C
0200: 52 45 41 54 45 20 54 41 42 4c 45 20 54 61 62 6c  REATE TABLE Tabl
0210: 65 30 20 28 43 6f 6c 30 20 20 4e 4f 54 20 4e 55  e0 (Col0  NOT NU
0220: 4c 4c 20 44 45 46 41 55 4c 54 20 28 43 55 52 52  LL DEFAULT (CURR
0230: 45 4e 54 5f 54 49 4d 45 20 49 53 20 31 20 3e 20  ENT_TIME IS 1 > 
0240: 31 29 29 3b 0a 20 20 49 4e 53 45 52 54 20 4f 52  1));.  INSERT OR
0250: 20 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 54 61   REPLACE INTO Ta
0260: 62 6c 65 30 20 44 45 46 41 55 4c 54 20 56 41 4c  ble0 DEFAULT VAL
0270: 55 45 53 20 3b 0a 20 20 53 45 4c 45 43 54 20 2a  UES ;.  SELECT *
0280: 20 46 52 4f 4d 20 54 61 62 6c 65 30 3b 0a 7d 20   FROM Table0;.} 
0290: 7b 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  {0}..do_execsql_
02a0: 74 65 73 74 20 66 75 7a 7a 34 2d 31 31 30 20 7b  test fuzz4-110 {
02b0: 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  .  CREATE TABLE 
02c0: 54 61 62 6c 65 31 28 0a 20 20 20 20 43 6f 6c 30  Table1(.    Col0
02d0: 20 54 45 58 54 20 44 45 46 41 55 4c 54 20 28 43   TEXT DEFAULT (C
02e0: 41 53 45 20 57 48 45 4e 20 31 20 49 53 20 33 35  ASE WHEN 1 IS 35
02f0: 33 30 38 32 32 31 30 37 38 35 38 34 36 38 38 36  3082210785846886
0300: 34 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  4 .             
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
0320: 48 45 4e 20 31 20 45 4c 53 45 20 71 75 6f 74 65  HEN 1 ELSE quote
0330: 28 31 29 20 49 53 20 33 35 33 30 38 32 32 31 30  (1) IS 353082210
0340: 37 38 35 38 34 36 38 38 36 34 20 45 4e 44 29 0a  7858468864 END).
0350: 20 20 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e    );.  INSERT IN
0360: 54 4f 20 54 61 62 6c 65 31 20 44 45 46 41 55 4c  TO Table1 DEFAUL
0370: 54 20 56 41 4c 55 45 53 3b 0a 20 20 53 45 4c 45  T VALUES;.  SELE
0380: 43 54 20 2a 20 46 52 4f 4d 20 54 61 62 6c 65 31  CT * FROM Table1
0390: 3b 0a 7d 20 7b 30 7d 0a 0a 64 6f 5f 65 78 65 63  ;.} {0}..do_exec
03a0: 73 71 6c 5f 74 65 73 74 20 66 75 7a 7a 34 2d 32  sql_test fuzz4-2
03b0: 30 30 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41  00 {.  CREATE TA
03c0: 42 4c 45 20 54 61 62 6c 65 32 61 28 0a 20 20 20  BLE Table2a(.   
03d0: 20 20 43 6f 6c 30 20 20 4e 4f 54 20 4e 55 4c 4c    Col0  NOT NULL
03e0: 20 20 20 44 45 46 41 55 4c 54 20 28 43 55 52 52     DEFAULT (CURR
03f0: 45 4e 54 5f 54 49 4d 45 20 49 53 20 31 20 20 49  ENT_TIME IS 1  I
0400: 53 20 4e 4f 54 20 31 20 20 3e 20 31 29 0a 20 20  S NOT 1  > 1).  
0410: 29 3b 0a 20 20 49 4e 53 45 52 54 20 4f 52 20 52  );.  INSERT OR R
0420: 45 50 4c 41 43 45 20 49 4e 54 4f 20 54 61 62 6c  EPLACE INTO Tabl
0430: 65 32 61 20 44 45 46 41 55 4c 54 20 56 41 4c 55  e2a DEFAULT VALU
0440: 45 53 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46  ES;.  SELECT * F
0450: 52 4f 4d 20 54 61 62 6c 65 32 61 3b 0a 7d 20 7b  ROM Table2a;.} {
0460: 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  0}..do_execsql_t
0470: 65 73 74 20 66 75 7a 7a 34 2d 32 31 30 20 7b 0a  est fuzz4-210 {.
0480: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 54    CREATE TABLE T
0490: 61 62 6c 65 32 62 20 28 43 6f 6c 30 20 20 4e 4f  able2b (Col0  NO
04a0: 54 20 4e 55 4c 4c 20 20 44 45 46 41 55 4c 54 20  T NULL  DEFAULT 
04b0: 28 43 55 52 52 45 4e 54 5f 54 49 4d 45 20 20 49  (CURRENT_TIME  I
04c0: 53 20 4e 4f 54 20 46 41 4c 53 45 29 29 20 3b 0a  S NOT FALSE)) ;.
04d0: 20 20 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c    INSERT OR REPL
04e0: 41 43 45 20 49 4e 54 4f 20 54 61 62 6c 65 32 62  ACE INTO Table2b
04f0: 20 44 45 46 41 55 4c 54 20 56 41 4c 55 45 53 20   DEFAULT VALUES 
0500: 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  ;.  SELECT * FRO
0510: 4d 20 54 61 62 6c 65 32 62 3b 0a 7d 20 7b 31 7d  M Table2b;.} {1}
0520: 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  ..do_execsql_tes
0530: 74 20 66 75 7a 7a 34 2d 33 30 30 20 7b 0a 20 20  t fuzz4-300 {.  
0540: 43 52 45 41 54 45 20 54 41 42 4c 45 20 54 61 62  CREATE TABLE Tab
0550: 6c 65 33 20 28 43 6f 6c 30 20 44 45 46 41 55 4c  le3 (Col0 DEFAUL
0560: 54 20 28 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  T (CURRENT_TIMES
0570: 54 41 4d 50 20 42 45 54 57 45 45 4e 20 31 20 41  TAMP BETWEEN 1 A
0580: 4e 44 20 31 29 29 3b 0a 20 20 49 4e 53 45 52 54  ND 1));.  INSERT
0590: 20 49 4e 54 4f 20 54 61 62 6c 65 33 20 44 45 46   INTO Table3 DEF
05a0: 41 55 4c 54 20 56 41 4c 55 45 53 3b 0a 20 20 53  AULT VALUES;.  S
05b0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 54 61 62  ELECT * FROM Tab
05c0: 6c 65 33 3b 0a 7d 20 7b 30 7d 0a 0a 64 6f 5f 65  le3;.} {0}..do_e
05d0: 78 65 63 73 71 6c 5f 74 65 73 74 20 66 75 7a 7a  xecsql_test fuzz
05e0: 34 2d 34 30 30 20 7b 0a 20 20 43 52 45 41 54 45  4-400 {.  CREATE
05f0: 20 54 41 42 4c 45 20 54 61 62 6c 65 34 20 28 43   TABLE Table4 (C
0600: 6f 6c 30 20 44 45 46 41 55 4c 54 20 28 31 20 42  ol0 DEFAULT (1 B
0610: 45 54 57 45 45 4e 20 43 55 52 52 45 4e 54 5f 54  ETWEEN CURRENT_T
0620: 49 4d 45 53 54 41 4d 50 20 41 4e 44 20 31 29 29  IMESTAMP AND 1))
0630: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
0640: 54 61 62 6c 65 34 20 44 45 46 41 55 4c 54 20 56  Table4 DEFAULT V
0650: 41 4c 55 45 53 3b 0a 20 20 53 45 4c 45 43 54 20  ALUES;.  SELECT 
0660: 2a 20 46 52 4f 4d 20 54 61 62 6c 65 34 3b 0a 7d  * FROM Table4;.}
0670: 20 7b 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c   {0}..do_execsql
0680: 5f 74 65 73 74 20 66 75 7a 7a 34 2d 35 30 30 20  _test fuzz4-500 
0690: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
06a0: 20 54 61 62 6c 65 35 20 28 43 6f 6c 30 20 44 45   Table5 (Col0 DE
06b0: 46 41 55 4c 54 20 28 31 20 42 45 54 57 45 45 4e  FAULT (1 BETWEEN
06c0: 20 31 20 41 4e 44 20 43 55 52 52 45 4e 54 5f 54   1 AND CURRENT_T
06d0: 49 4d 45 53 54 41 4d 50 29 29 3b 0a 20 20 49 4e  IMESTAMP));.  IN
06e0: 53 45 52 54 20 49 4e 54 4f 20 54 61 62 6c 65 35  SERT INTO Table5
06f0: 20 44 45 46 41 55 4c 54 20 56 41 4c 55 45 53 3b   DEFAULT VALUES;
0700: 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  .  SELECT * FROM
0710: 20 54 61 62 6c 65 35 3b 0a 7d 20 7b 31 7d 0a 0a   Table5;.} {1}..
0720: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0730: 66 75 7a 7a 34 2d 36 30 30 20 7b 0a 20 20 43 52  fuzz4-600 {.  CR
0740: 45 41 54 45 20 54 45 4d 50 4f 52 41 52 59 20 54  EATE TEMPORARY T
0750: 41 42 4c 45 20 54 61 62 6c 65 36 28 0a 20 20 20  ABLE Table6(.   
0760: 20 43 6f 6c 30 20 44 45 46 41 55 4c 54 20 28 43   Col0 DEFAULT (C
0770: 41 53 45 20 78 27 35 64 27 20 57 48 45 4e 20 31  ASE x'5d' WHEN 1
0780: 20 54 48 45 4e 0a 20 20 20 20 20 20 20 20 43 41   THEN.        CA
0790: 53 45 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  SE CURRENT_TIMES
07a0: 54 41 4d 50 20 57 48 45 4e 20 31 20 54 48 45 4e  TAMP WHEN 1 THEN
07b0: 20 31 20 45 4c 53 45 20 31 20 45 4e 44 0a 20 20   1 ELSE 1 END.  
07c0: 20 20 20 20 20 20 45 4c 53 45 20 43 41 53 45 20        ELSE CASE 
07d0: 57 48 45 4e 20 31 20 54 48 45 4e 20 46 41 4c 53  WHEN 1 THEN FALS
07e0: 45 20 45 4e 44 20 20 45 4e 44 20 29 0a 20 20 29  E END  END ).  )
07f0: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
0800: 74 65 6d 70 2e 54 61 62 6c 65 36 20 44 45 46 41  temp.Table6 DEFA
0810: 55 4c 54 20 56 41 4c 55 45 53 20 3b 0a 20 20 53  ULT VALUES ;.  S
0820: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 54 61 62  ELECT * FROM Tab
0830: 6c 65 36 3b 0a 7d 20 7b 30 7d 0a 64 6f 5f 65 78  le6;.} {0}.do_ex
0840: 65 63 73 71 6c 5f 74 65 73 74 20 66 75 7a 7a 34  ecsql_test fuzz4
0850: 2d 36 31 30 20 7b 0a 20 20 57 49 54 48 20 54 61  -610 {.  WITH Ta
0860: 62 6c 65 58 20 41 53 20 28 53 45 4c 45 43 54 20  bleX AS (SELECT 
0870: 44 49 53 54 49 4e 43 54 20 2a 20 4f 52 44 45 52  DISTINCT * ORDER
0880: 20 42 59 20 31 20 20 2c 20 31 20 43 4f 4c 4c 41   BY 1  , 1 COLLA
0890: 54 45 20 52 54 52 49 4d 29 0a 20 20 20 20 20 20  TE RTRIM).      
08a0: 44 45 4c 45 54 45 20 46 52 4f 4d 20 54 61 62 6c  DELETE FROM Tabl
08b0: 65 36 20 20 57 48 45 52 45 20 43 6f 6c 30 20 7c  e6  WHERE Col0 |
08c0: 7c 20 2b 38 33 38 38 36 30 38 20 20 3b 0a 20 20  | +8388608  ;.  
08d0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 54 61  SELECT * FROM Ta
08e0: 62 6c 65 36 3b 0a 7d 20 7b 7d 0a 0a 0a 66 69 6e  ble6;.} {}...fin
08f0: 69 73 68 5f 74 65 73 74 0a                       ish_test.