/ Hex Artifact Content
Login

Artifact 21f6bdeadc701cf11528276e2a55c70bfcb846ba42df327f979bd9e7b6ce7041:


0000: 2d 2d 20 52 75 6e 20 74 68 69 73 20 73 63 72 69  -- Run this scri
0010: 70 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 73  pt through the s
0020: 71 6c 69 74 65 33 20 63 6f 6d 6d 61 6e 64 2d 6c  qlite3 command-l
0030: 69 6e 65 20 73 68 65 6c 6c 20 69 6e 20 6f 72 64  ine shell in ord
0040: 65 72 20 74 6f 20 67 65 6e 65 72 61 74 65 0a 2d  er to generate.-
0050: 2d 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  - a database fil
0060: 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 6c 6f 74  e containing lot
0070: 73 20 6f 66 20 64 61 74 61 20 66 6f 72 20 74 65  s of data for te
0080: 73 74 69 6e 67 20 70 75 72 70 6f 73 65 73 2e 0a  sting purposes..
0090: 2d 2d 0a 2d 2d 20 54 68 69 73 20 73 63 72 69 70  --.-- This scrip
00a0: 74 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 74  t assumes that t
00b0: 68 65 20 22 62 69 6e 32 63 22 20 70 72 6f 67 72  he "bin2c" progr
00c0: 61 6d 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20  am is available 
00d0: 6f 6e 20 6f 6e 65 73 20 24 50 41 54 48 2e 0a 2d  on ones $PATH..-
00e0: 2d 20 54 68 65 20 22 62 69 6e 32 63 22 20 70 72  - The "bin2c" pr
00f0: 6f 67 72 61 6d 20 72 65 61 64 73 20 61 20 62 69  ogram reads a bi
0100: 6e 61 72 79 20 66 69 6c 65 20 61 6e 64 20 6f 75  nary file and ou
0110: 74 70 75 74 73 20 43 2d 63 6f 64 65 20 74 68 61  tputs C-code tha
0120: 74 20 63 72 65 61 74 65 73 0a 2d 2d 20 61 6e 20  t creates.-- an 
0130: 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 20 68  array of bytes h
0140: 6f 6c 64 69 6e 67 20 74 68 65 20 63 6f 6e 74 65  olding the conte
0150: 6e 74 20 6f 66 20 74 68 61 74 20 66 69 6c 65 2e  nt of that file.
0160: 0a 2d 2d 0a 2d 2d 20 54 68 69 73 20 73 63 72 69  .--.-- This scri
0170: 70 74 20 69 73 20 64 65 73 69 67 6e 65 64 20 74  pt is designed t
0180: 6f 20 63 72 65 61 74 65 20 6d 61 6e 79 20 74 61  o create many ta
0190: 62 6c 65 73 20 61 6e 64 20 76 69 65 77 73 20 61  bles and views a
01a0: 6c 6c 20 68 61 76 69 6e 67 0a 2d 2d 20 35 20 63  ll having.-- 5 c
01b0: 6f 6c 75 6d 6e 73 2c 20 22 61 22 20 74 68 72 6f  olumns, "a" thro
01c0: 75 67 68 20 22 65 22 2c 20 61 6e 64 20 77 69 74  ugh "e", and wit
01d0: 68 20 61 20 76 61 72 69 65 74 79 20 6f 66 20 69  h a variety of i
01e0: 6e 74 65 67 65 72 73 2c 20 73 68 6f 72 74 20 73  ntegers, short s
01f0: 74 72 69 6e 67 73 2c 0a 2d 2d 20 61 6e 64 20 4e  trings,.-- and N
0200: 55 4c 4c 20 76 61 6c 75 65 73 2e 0a 2d 2d 0a 2e  ULL values..--..
0210: 6f 70 65 6e 20 2d 6e 65 77 20 74 65 73 74 64 62  open -new testdb
0220: 30 31 2e 64 62 0a 50 52 41 47 4d 41 20 70 61 67  01.db.PRAGMA pag
0230: 65 5f 73 69 7a 65 3d 35 31 32 3b 0a 42 45 47 49  e_size=512;.BEGI
0240: 4e 3b 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20  N;.CREATE TABLE 
0250: 74 31 28 61 20 49 4e 54 45 47 45 52 20 50 52 49  t1(a INTEGER PRI
0260: 4d 41 52 59 20 4b 45 59 2c 20 62 20 49 4e 54 2c  MARY KEY, b INT,
0270: 20 63 20 49 4e 54 2c 20 64 20 49 4e 54 2c 20 65   c INT, d INT, e
0280: 20 49 4e 54 29 3b 0a 57 49 54 48 20 52 45 43 55   INT);.WITH RECU
0290: 52 53 49 56 45 20 63 28 78 29 20 41 53 20 28 56  RSIVE c(x) AS (V
02a0: 41 4c 55 45 53 28 31 29 20 55 4e 49 4f 4e 20 41  ALUES(1) UNION A
02b0: 4c 4c 20 53 45 4c 45 43 54 20 78 2b 31 20 46 52  LL SELECT x+1 FR
02c0: 4f 4d 20 63 20 57 48 45 52 45 20 78 3c 35 30 29  OM c WHERE x<50)
02d0: 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 28  .INSERT INTO t1(
02e0: 61 2c 62 2c 63 2c 64 2c 65 29 20 53 45 4c 45 43  a,b,c,d,e) SELEC
02f0: 54 20 78 2c 61 62 73 28 72 61 6e 64 6f 6d 28 29  T x,abs(random()
0300: 25 35 31 29 2c 0a 20 20 20 61 62 73 28 72 61 6e  %51),.   abs(ran
0310: 64 6f 6d 28 29 25 31 30 30 29 2c 20 61 62 73 28  dom()%100), abs(
0320: 72 61 6e 64 6f 6d 28 29 25 35 31 29 2c 20 61 62  random()%51), ab
0330: 73 28 72 61 6e 64 6f 6d 28 29 25 31 30 30 29 20  s(random()%100) 
0340: 46 52 4f 4d 20 63 3b 0a 43 52 45 41 54 45 20 54  FROM c;.CREATE T
0350: 41 42 4c 45 20 74 32 28 61 20 49 4e 54 2c 20 62  ABLE t2(a INT, b
0360: 20 49 4e 54 2c 20 63 20 49 4e 54 2c 64 20 49 4e   INT, c INT,d IN
0370: 54 2c 65 20 49 4e 54 2c 50 52 49 4d 41 52 59 20  T,e INT,PRIMARY 
0380: 4b 45 59 28 62 2c 61 29 29 57 49 54 48 4f 55 54  KEY(b,a))WITHOUT
0390: 20 52 4f 57 49 44 3b 0a 49 4e 53 45 52 54 20 49   ROWID;.INSERT I
03a0: 4e 54 4f 20 74 32 20 53 45 4c 45 43 54 20 2a 20  NTO t2 SELECT * 
03b0: 46 52 4f 4d 20 74 31 3b 0a 43 52 45 41 54 45 20  FROM t1;.CREATE 
03c0: 54 41 42 4c 45 20 74 33 28 61 2c 62 2c 63 2c 64  TABLE t3(a,b,c,d
03d0: 2c 65 29 3b 0a 49 4e 53 45 52 54 20 49 4e 54 4f  ,e);.INSERT INTO
03e0: 20 74 33 20 53 45 4c 45 43 54 20 61 2c 62 2c 63   t3 SELECT a,b,c
03f0: 2c 64 2c 65 20 46 52 4f 4d 20 74 31 20 4f 52 44  ,d,e FROM t1 ORD
0400: 45 52 20 42 59 20 72 61 6e 64 6f 6d 28 29 20 4c  ER BY random() L
0410: 49 4d 49 54 20 35 3b 0a 49 4e 53 45 52 54 20 49  IMIT 5;.INSERT I
0420: 4e 54 4f 20 74 33 20 53 45 4c 45 43 54 20 6e 75  NTO t3 SELECT nu
0430: 6c 6c 2c 62 2c 63 2c 64 2c 65 20 46 52 4f 4d 20  ll,b,c,d,e FROM 
0440: 74 31 20 4f 52 44 45 52 20 42 59 20 72 61 6e 64  t1 ORDER BY rand
0450: 6f 6d 28 29 20 4c 49 4d 49 54 20 35 3b 0a 49 4e  om() LIMIT 5;.IN
0460: 53 45 52 54 20 49 4e 54 4f 20 74 33 20 53 45 4c  SERT INTO t3 SEL
0470: 45 43 54 20 61 2c 6e 75 6c 6c 2c 63 2c 64 2c 65  ECT a,null,c,d,e
0480: 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20 42   FROM t1 ORDER B
0490: 59 20 72 61 6e 64 6f 6d 28 29 20 4c 49 4d 49 54  Y random() LIMIT
04a0: 20 35 3b 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20   5;.INSERT INTO 
04b0: 74 33 20 53 45 4c 45 43 54 20 61 2c 62 2c 6e 75  t3 SELECT a,b,nu
04c0: 6c 6c 2c 64 2c 65 20 46 52 4f 4d 20 74 31 20 4f  ll,d,e FROM t1 O
04d0: 52 44 45 52 20 42 59 20 72 61 6e 64 6f 6d 28 29  RDER BY random()
04e0: 20 4c 49 4d 49 54 20 35 3b 0a 49 4e 53 45 52 54   LIMIT 5;.INSERT
04f0: 20 49 4e 54 4f 20 74 33 20 53 45 4c 45 43 54 20   INTO t3 SELECT 
0500: 61 2c 62 2c 63 2c 6e 75 6c 6c 2c 65 20 46 52 4f  a,b,c,null,e FRO
0510: 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20 72 61  M t1 ORDER BY ra
0520: 6e 64 6f 6d 28 29 20 4c 49 4d 49 54 20 35 3b 0a  ndom() LIMIT 5;.
0530: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 53  INSERT INTO t3 S
0540: 45 4c 45 43 54 20 61 2c 62 2c 63 2c 64 2c 6e 75  ELECT a,b,c,d,nu
0550: 6c 6c 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52  ll FROM t1 ORDER
0560: 20 42 59 20 72 61 6e 64 6f 6d 28 29 20 4c 49 4d   BY random() LIM
0570: 49 54 20 35 3b 0a 49 4e 53 45 52 54 20 49 4e 54  IT 5;.INSERT INT
0580: 4f 20 74 33 20 53 45 4c 45 43 54 20 6e 75 6c 6c  O t3 SELECT null
0590: 2c 6e 75 6c 6c 2c 6e 75 6c 6c 2c 6e 75 6c 6c 2c  ,null,null,null,
05a0: 6e 75 6c 6c 20 46 52 4f 4d 20 74 31 20 4c 49 4d  null FROM t1 LIM
05b0: 49 54 20 35 3b 0a 43 52 45 41 54 45 20 49 4e 44  IT 5;.CREATE IND
05c0: 45 58 20 74 33 78 31 20 4f 4e 20 74 33 28 61 2c  EX t3x1 ON t3(a,
05d0: 62 2c 63 2c 64 2c 65 29 3b 0a 43 52 45 41 54 45  b,c,d,e);.CREATE
05e0: 20 54 41 42 4c 45 20 74 34 28 61 20 49 4e 54 20   TABLE t4(a INT 
05f0: 55 4e 49 51 55 45 20 4e 4f 54 20 4e 55 4c 4c 2c  UNIQUE NOT NULL,
0600: 20 62 20 49 4e 54 20 55 4e 49 51 55 45 20 4e 4f   b INT UNIQUE NO
0610: 54 20 4e 55 4c 4c 2c 63 2c 64 2c 65 29 3b 0a 49  T NULL,c,d,e);.I
0620: 4e 53 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 20  NSERT OR IGNORE 
0630: 49 4e 54 4f 20 74 34 20 53 45 4c 45 43 54 20 61  INTO t4 SELECT a
0640: 2c 62 2c 63 2c 64 2c 65 20 46 52 4f 4d 20 74 33  ,b,c,d,e FROM t3
0650: 3b 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 74  ;.CREATE TABLE t
0660: 35 28 61 20 49 4e 54 45 47 45 52 20 50 52 49 4d  5(a INTEGER PRIM
0670: 41 52 59 20 4b 45 59 2c 20 62 20 54 45 58 54 20  ARY KEY, b TEXT 
0680: 55 4e 49 51 55 45 2c 63 2c 64 2c 65 29 3b 0a 49  UNIQUE,c,d,e);.I
0690: 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 28 62 29  NSERT INTO t5(b)
06a0: 20 56 41 4c 55 45 53 0a 20 20 20 28 27 74 72 75   VALUES.   ('tru
06b0: 74 68 27 29 2c 0a 20 20 20 28 27 77 6f 72 6b 73  th'),.   ('works
06c0: 27 29 2c 0a 20 20 20 28 27 6f 66 66 65 72 27 29  '),.   ('offer')
06d0: 2c 0a 20 20 20 28 27 63 61 6e 27 29 2c 0a 20 20  ,.   ('can'),.  
06e0: 20 28 27 61 6e 67 65 72 27 29 2c 0a 20 20 20 28   ('anger'),.   (
06f0: 27 77 69 73 64 6f 6d 27 29 2c 0a 20 20 20 28 27  'wisdom'),.   ('
0700: 73 65 6e 64 27 29 2c 0a 20 20 20 28 27 74 68 6f  send'),.   ('tho
0710: 75 67 68 27 29 2c 0a 20 20 20 28 27 73 61 76 65  ugh'),.   ('save
0720: 27 29 2c 0a 20 20 20 28 27 62 65 74 77 65 65 6e  '),.   ('between
0730: 27 29 2c 0a 20 20 20 28 27 73 6f 6d 65 27 29 2c  '),.   ('some'),
0740: 0a 20 20 20 28 27 77 69 6e 65 27 29 2c 0a 20 20  .   ('wine'),.  
0750: 20 28 27 61 72 6b 27 29 2c 0a 20 20 20 28 27 73   ('ark'),.   ('s
0760: 6d 6f 74 65 27 29 2c 0a 20 20 20 28 27 74 68 65  mote'),.   ('the
0770: 72 65 69 6e 27 29 2c 0a 20 20 20 28 27 73 68 65  rein'),.   ('she
0780: 77 27 29 2c 0a 20 20 20 28 27 6d 6f 72 6e 69 6e  w'),.   ('mornin
0790: 67 27 29 2c 0a 20 20 20 28 27 64 77 65 6c 74 27  g'),.   ('dwelt'
07a0: 29 2c 0a 20 20 20 28 27 62 65 67 61 74 27 29 2c  ),.   ('begat'),
07b0: 0a 20 20 20 28 27 6e 6f 74 68 69 6e 67 27 29 2c  .   ('nothing'),
07c0: 0a 20 20 20 28 27 77 61 72 27 29 2c 0a 20 20 20  .   ('war'),.   
07d0: 28 27 61 62 6f 76 65 27 29 2c 0a 20 20 20 28 27  ('above'),.   ('
07e0: 6b 6e 6f 77 6e 27 29 2c 0a 20 20 20 28 27 73 61  known'),.   ('sa
07f0: 63 72 69 66 69 63 65 27 29 2c 0a 20 20 20 28 27  crifice'),.   ('
0800: 74 65 6c 6c 27 29 2c 0a 20 20 20 28 27 64 65 70  tell'),.   ('dep
0810: 61 72 74 65 64 27 29 2c 0a 20 20 20 28 27 74 68  arted'),.   ('th
0820: 79 73 65 6c 66 27 29 2c 0a 20 20 20 28 27 70 6c  yself'),.   ('pl
0830: 61 63 65 73 27 29 2c 0a 20 20 20 28 27 62 65 61  aces'),.   ('bea
0840: 72 27 29 2c 0a 20 20 20 28 27 70 61 72 74 27 29  r'),.   ('part')
0850: 2c 0a 20 20 20 28 27 77 68 69 6c 65 27 29 2c 0a  ,.   ('while'),.
0860: 20 20 20 28 27 67 6f 6e 65 27 29 2c 0a 20 20 20     ('gone'),.   
0870: 28 27 63 75 62 69 74 73 27 29 2c 0a 20 20 20 28  ('cubits'),.   (
0880: 27 77 61 6c 6b 27 29 2c 0a 20 20 20 28 27 6c 6f  'walk'),.   ('lo
0890: 6e 67 27 29 2c 0a 20 20 20 28 27 6e 65 61 72 27  ng'),.   ('near'
08a0: 29 2c 0a 20 20 20 28 27 73 65 72 76 65 27 29 2c  ),.   ('serve'),
08b0: 0a 20 20 20 28 27 66 72 75 69 74 27 29 2c 0a 20  .   ('fruit'),. 
08c0: 20 20 28 27 64 6f 74 68 27 29 2c 0a 20 20 20 28    ('doth'),.   (
08d0: 27 70 6f 6f 72 27 29 2c 0a 20 20 20 28 27 77 61  'poor'),.   ('wa
08e0: 79 73 27 29 2c 0a 20 20 20 28 27 63 68 69 6c 64  ys'),.   ('child
08f0: 27 29 2c 0a 20 20 20 28 27 74 65 6d 70 6c 65 27  '),.   ('temple'
0900: 29 2c 0a 20 20 20 28 27 61 6e 67 65 6c 27 29 2c  ),.   ('angel'),
0910: 0a 20 20 20 28 27 69 6e 68 61 62 69 74 61 6e 74  .   ('inhabitant
0920: 73 27 29 2c 0a 20 20 20 28 27 6f 69 6c 27 29 2c  s'),.   ('oil'),
0930: 0a 20 20 20 28 27 64 69 65 64 27 29 2c 0a 20 20  .   ('died'),.  
0940: 20 28 27 73 69 78 27 29 2c 0a 20 20 20 28 27 74   ('six'),.   ('t
0950: 72 65 65 27 29 2c 0a 20 20 20 28 27 77 72 61 74  ree'),.   ('wrat
0960: 68 27 29 3b 0a 55 50 44 41 54 45 20 74 31 20 53  h');.UPDATE t1 S
0970: 45 54 20 65 3d 28 53 45 4c 45 43 54 20 62 20 46  ET e=(SELECT b F
0980: 52 4f 4d 20 74 35 20 57 48 45 52 45 20 74 35 2e  ROM t5 WHERE t5.
0990: 61 3d 28 74 31 2e 65 25 35 31 29 29 3b 0a 55 50  a=(t1.e%51));.UP
09a0: 44 41 54 45 20 74 35 20 53 45 54 20 28 63 2c 64  DATE t5 SET (c,d
09b0: 2c 65 29 20 3d 20 0a 20 20 20 28 53 45 4c 45 43  ,e) = .   (SELEC
09c0: 54 20 63 2c 64 2c 65 20 46 52 4f 4d 20 74 31 20  T c,d,e FROM t1 
09d0: 57 48 45 52 45 20 74 31 2e 61 3d 61 62 73 28 74  WHERE t1.a=abs(t
09e0: 35 2e 61 2b 72 61 6e 64 6f 6d 28 29 2f 31 30 30  5.a+random()/100
09f0: 29 25 35 30 2b 31 29 3b 0a 55 50 44 41 54 45 20  )%50+1);.UPDATE 
0a00: 74 32 20 53 45 54 20 65 3d 28 53 45 4c 45 43 54  t2 SET e=(SELECT
0a10: 20 62 20 46 52 4f 4d 20 74 35 20 57 48 45 52 45   b FROM t5 WHERE
0a20: 20 74 35 2e 61 3d 28 74 32 2e 65 25 35 31 29 29   t5.a=(t2.e%51))
0a30: 3b 0a 55 50 44 41 54 45 20 74 33 20 53 45 54 20  ;.UPDATE t3 SET 
0a40: 65 3d 28 53 45 4c 45 43 54 20 62 20 46 52 4f 4d  e=(SELECT b FROM
0a50: 20 74 35 20 57 48 45 52 45 20 74 35 2e 61 3d 74   t5 WHERE t5.a=t
0a60: 33 2e 65 29 3b 0a 43 52 45 41 54 45 20 49 4e 44  3.e);.CREATE IND
0a70: 45 58 20 74 31 65 20 4f 4e 20 74 31 28 65 29 3b  EX t1e ON t1(e);
0a80: 0a 43 52 45 41 54 45 20 49 4e 44 45 58 20 74 32  .CREATE INDEX t2
0a90: 65 64 20 4f 4e 20 74 32 28 65 2c 64 29 3b 0a 43  ed ON t2(e,d);.C
0aa0: 52 45 41 54 45 20 56 49 45 57 20 76 30 30 28 61  REATE VIEW v00(a
0ab0: 2c 62 2c 63 2c 64 2c 65 29 20 41 53 20 53 45 4c  ,b,c,d,e) AS SEL
0ac0: 45 43 54 20 31 2c 31 2c 31 2c 31 2c 27 6f 6e 65  ECT 1,1,1,1,'one
0ad0: 27 3b 0a 43 52 45 41 54 45 20 56 49 45 57 20 76  ';.CREATE VIEW v
0ae0: 31 30 28 61 2c 62 2c 63 2c 64 2c 65 29 20 41 53  10(a,b,c,d,e) AS
0af0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 2c 64 2c   SELECT a,b,c,d,
0b00: 65 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  e FROM t1 WHERE 
0b10: 61 3c 3e 32 35 3b 0a 43 52 45 41 54 45 20 56 49  a<>25;.CREATE VI
0b20: 45 57 20 76 32 30 28 61 2c 62 2c 63 2c 64 2c 65  EW v20(a,b,c,d,e
0b30: 29 20 41 53 20 53 45 4c 45 43 54 20 61 2c 62 2c  ) AS SELECT a,b,
0b40: 63 2c 64 2c 65 20 46 52 4f 4d 20 74 32 20 57 48  c,d,e FROM t2 WH
0b50: 45 52 45 20 61 3c 3e 32 35 3b 0a 43 52 45 41 54  ERE a<>25;.CREAT
0b60: 45 20 56 49 45 57 20 76 33 30 28 61 2c 62 2c 63  E VIEW v30(a,b,c
0b70: 2c 64 2c 65 29 20 41 53 20 53 45 4c 45 43 54 20  ,d,e) AS SELECT 
0b80: 61 2c 62 2c 63 2c 64 2c 65 20 46 52 4f 4d 20 74  a,b,c,d,e FROM t
0b90: 33 20 57 48 45 52 45 20 61 3c 3e 32 35 3b 0a 43  3 WHERE a<>25;.C
0ba0: 52 45 41 54 45 20 56 49 45 57 20 76 34 30 28 61  REATE VIEW v40(a
0bb0: 2c 62 2c 63 2c 64 2c 65 29 20 41 53 20 53 45 4c  ,b,c,d,e) AS SEL
0bc0: 45 43 54 20 61 2c 62 2c 63 2c 64 2c 65 20 46 52  ECT a,b,c,d,e FR
0bd0: 4f 4d 20 74 34 20 57 48 45 52 45 20 61 3c 3e 32  OM t4 WHERE a<>2
0be0: 35 3b 0a 43 52 45 41 54 45 20 56 49 45 57 20 76  5;.CREATE VIEW v
0bf0: 35 30 28 61 2c 62 29 20 41 53 20 53 45 4c 45 43  50(a,b) AS SELEC
0c00: 54 20 61 2c 62 20 46 52 4f 4d 20 74 35 20 57 48  T a,b FROM t5 WH
0c10: 45 52 45 20 61 3c 3e 32 35 3b 0a 43 52 45 41 54  ERE a<>25;.CREAT
0c20: 45 20 56 49 45 57 20 76 31 31 28 61 2c 62 2c 63  E VIEW v11(a,b,c
0c30: 2c 64 2c 65 29 20 41 53 20 53 45 4c 45 43 54 20  ,d,e) AS SELECT 
0c40: 61 2c 62 2c 63 2c 64 2c 65 20 46 52 4f 4d 20 74  a,b,c,d,e FROM t
0c50: 31 20 4f 52 44 45 52 20 42 59 20 62 20 4c 49 4d  1 ORDER BY b LIM
0c60: 49 54 20 31 30 3b 0a 43 52 45 41 54 45 20 56 49  IT 10;.CREATE VI
0c70: 45 57 20 76 32 31 28 61 2c 62 2c 63 2c 64 2c 65  EW v21(a,b,c,d,e
0c80: 29 20 41 53 20 53 45 4c 45 43 54 20 61 2c 62 2c  ) AS SELECT a,b,
0c90: 63 2c 64 2c 65 20 46 52 4f 4d 20 74 32 20 4f 52  c,d,e FROM t2 OR
0ca0: 44 45 52 20 42 59 20 62 20 4c 49 4d 49 54 20 31  DER BY b LIMIT 1
0cb0: 30 3b 0a 43 52 45 41 54 45 20 56 49 45 57 20 76  0;.CREATE VIEW v
0cc0: 33 31 28 61 2c 62 2c 63 2c 64 2c 65 29 20 41 53  31(a,b,c,d,e) AS
0cd0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 2c 64 2c   SELECT a,b,c,d,
0ce0: 65 20 46 52 4f 4d 20 74 33 20 4f 52 44 45 52 20  e FROM t3 ORDER 
0cf0: 42 59 20 62 20 4c 49 4d 49 54 20 31 30 3b 0a 43  BY b LIMIT 10;.C
0d00: 52 45 41 54 45 20 56 49 45 57 20 76 34 31 28 61  REATE VIEW v41(a
0d10: 2c 62 2c 63 2c 64 2c 65 29 20 41 53 20 53 45 4c  ,b,c,d,e) AS SEL
0d20: 45 43 54 20 61 2c 62 2c 63 2c 64 2c 65 20 46 52  ECT a,b,c,d,e FR
0d30: 4f 4d 20 74 34 20 4f 52 44 45 52 20 42 59 20 62  OM t4 ORDER BY b
0d40: 20 4c 49 4d 49 54 20 31 30 3b 0a 43 52 45 41 54   LIMIT 10;.CREAT
0d50: 45 20 56 49 45 57 20 76 35 31 28 61 2c 62 29 20  E VIEW v51(a,b) 
0d60: 41 53 20 53 45 4c 45 43 54 20 61 2c 62 20 46 52  AS SELECT a,b FR
0d70: 4f 4d 20 74 35 20 4f 52 44 45 52 20 42 59 20 62  OM t5 ORDER BY b
0d80: 20 4c 49 4d 49 54 20 31 30 3b 0a 43 52 45 41 54   LIMIT 10;.CREAT
0d90: 45 20 56 49 45 57 20 76 31 32 28 61 2c 62 2c 63  E VIEW v12(a,b,c
0da0: 2c 64 2c 65 29 20 41 53 0a 20 20 53 45 4c 45 43  ,d,e) AS.  SELEC
0db0: 54 20 73 75 6d 28 61 29 2c 20 61 76 67 28 62 29  T sum(a), avg(b)
0dc0: 2c 20 63 6f 75 6e 74 28 2a 29 2c 20 6d 69 6e 28  , count(*), min(
0dd0: 64 29 2c 20 65 20 46 52 4f 4d 20 74 31 20 47 52  d), e FROM t1 GR
0de0: 4f 55 50 20 42 59 20 35 3b 0a 43 52 45 41 54 45  OUP BY 5;.CREATE
0df0: 20 56 49 45 57 20 76 32 32 28 61 2c 62 2c 63 2c   VIEW v22(a,b,c,
0e00: 64 2c 65 29 20 41 53 0a 20 20 53 45 4c 45 43 54  d,e) AS.  SELECT
0e10: 20 73 75 6d 28 61 29 2c 20 61 76 67 28 62 29 2c   sum(a), avg(b),
0e20: 20 63 6f 75 6e 74 28 2a 29 2c 20 6d 69 6e 28 64   count(*), min(d
0e30: 29 2c 20 65 20 46 52 4f 4d 20 74 32 20 47 52 4f  ), e FROM t2 GRO
0e40: 55 50 20 42 59 20 35 0a 20 20 20 20 48 41 56 49  UP BY 5.    HAVI
0e50: 4e 47 20 63 6f 75 6e 74 28 2a 29 3e 31 20 4f 52  NG count(*)>1 OR
0e60: 44 45 52 20 42 59 20 33 2c 20 31 3b 0a 43 52 45  DER BY 3, 1;.CRE
0e70: 41 54 45 20 56 49 45 57 20 76 33 32 28 61 2c 62  ATE VIEW v32(a,b
0e80: 2c 63 2c 64 2c 65 29 20 41 53 0a 20 20 53 45 4c  ,c,d,e) AS.  SEL
0e90: 45 43 54 20 73 75 6d 28 61 29 2c 20 61 76 67 28  ECT sum(a), avg(
0ea0: 62 29 2c 20 63 6f 75 6e 74 28 2a 29 2c 20 6d 69  b), count(*), mi
0eb0: 6e 28 64 29 2c 20 65 20 46 52 4f 4d 20 74 33 20  n(d), e FROM t3 
0ec0: 47 52 4f 55 50 20 42 59 20 35 0a 20 20 20 20 48  GROUP BY 5.    H
0ed0: 41 56 49 4e 47 20 63 6f 75 6e 74 28 2a 29 3e 31  AVING count(*)>1
0ee0: 20 4f 52 44 45 52 20 42 59 20 33 2c 20 31 3b 0a   ORDER BY 3, 1;.
0ef0: 43 52 45 41 54 45 20 56 49 45 57 20 76 34 32 28  CREATE VIEW v42(
0f00: 61 2c 62 2c 63 2c 64 2c 65 29 20 41 53 0a 20 20  a,b,c,d,e) AS.  
0f10: 53 45 4c 45 43 54 20 73 75 6d 28 61 29 2c 20 61  SELECT sum(a), a
0f20: 76 67 28 62 29 2c 20 63 6f 75 6e 74 28 2a 29 2c  vg(b), count(*),
0f30: 20 6d 69 6e 28 64 29 2c 20 65 20 46 52 4f 4d 20   min(d), e FROM 
0f40: 74 34 20 47 52 4f 55 50 20 42 59 20 35 0a 20 20  t4 GROUP BY 5.  
0f50: 20 20 48 41 56 49 4e 47 20 6d 69 6e 28 64 29 3c    HAVING min(d)<
0f60: 33 30 20 4f 52 44 45 52 20 42 59 20 33 2c 20 31  30 ORDER BY 3, 1
0f70: 3b 0a 43 52 45 41 54 45 20 56 49 45 57 20 76 35  ;.CREATE VIEW v5
0f80: 32 28 61 2c 62 2c 63 2c 64 2c 65 29 20 41 53 0a  2(a,b,c,d,e) AS.
0f90: 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a    SELECT count(*
0fa0: 29 2c 20 6d 69 6e 28 62 29 2c 20 73 75 62 73 74  ), min(b), subst
0fb0: 72 28 62 2c 31 2c 31 29 2c 20 6d 69 6e 28 61 29  r(b,1,1), min(a)
0fc0: 2c 20 6d 61 78 28 61 29 20 46 52 4f 4d 20 74 35  , max(a) FROM t5
0fd0: 0a 20 20 20 47 52 4f 55 50 20 42 59 20 33 20 4f  .   GROUP BY 3 O
0fe0: 52 44 45 52 20 42 59 20 31 3b 0a 0a 43 52 45 41  RDER BY 1;..CREA
0ff0: 54 45 20 56 49 45 57 20 76 31 33 28 61 2c 62 2c  TE VIEW v13(a,b,
1000: 63 2c 64 2c 65 29 20 41 53 0a 20 20 53 45 4c 45  c,d,e) AS.  SELE
1010: 43 54 20 61 2c 62 2c 63 2c 64 2c 65 20 46 52 4f  CT a,b,c,d,e FRO
1020: 4d 20 74 31 0a 20 20 55 4e 49 4f 4e 20 53 45 4c  M t1.  UNION SEL
1030: 45 43 54 20 61 2c 62 2c 63 2c 64 2c 65 20 46 52  ECT a,b,c,d,e FR
1040: 4f 4d 20 74 32 0a 20 20 55 4e 49 4f 4e 20 53 45  OM t2.  UNION SE
1050: 4c 45 43 54 20 61 2c 62 2c 63 2c 64 2c 65 20 46  LECT a,b,c,d,e F
1060: 52 4f 4d 20 74 33 3b 0a 43 52 45 41 54 45 20 56  ROM t3;.CREATE V
1070: 49 45 57 20 76 32 33 28 61 2c 62 2c 63 2c 64 2c  IEW v23(a,b,c,d,
1080: 65 29 20 41 53 0a 20 20 53 45 4c 45 43 54 20 61  e) AS.  SELECT a
1090: 2c 62 2c 63 2c 64 2c 65 20 46 52 4f 4d 20 74 31  ,b,c,d,e FROM t1
10a0: 0a 20 20 45 58 43 45 50 54 20 53 45 4c 45 43 54  .  EXCEPT SELECT
10b0: 20 61 2c 62 2c 63 2c 64 2c 65 20 46 52 4f 4d 20   a,b,c,d,e FROM 
10c0: 74 31 20 57 48 45 52 45 20 62 3c 32 35 3b 0a 0a  t1 WHERE b<25;..
10d0: 43 52 45 41 54 45 20 56 49 45 57 20 76 36 30 28  CREATE VIEW v60(
10e0: 61 2c 62 2c 63 2c 64 2c 65 29 20 41 53 0a 20 20  a,b,c,d,e) AS.  
10f0: 53 45 4c 45 43 54 20 74 31 2e 61 2c 74 32 2e 62  SELECT t1.a,t2.b
1100: 2c 74 31 2e 63 2c 74 32 2e 64 2c 74 31 2e 65 0a  ,t1.c,t2.d,t1.e.
1110: 20 20 20 20 46 52 4f 4d 20 74 31 20 4c 45 46 54      FROM t1 LEFT
1120: 20 4a 4f 49 4e 20 74 32 20 4f 4e 20 28 74 31 2e   JOIN t2 ON (t1.
1130: 61 3d 74 32 2e 62 29 3b 0a 43 52 45 41 54 45 20  a=t2.b);.CREATE 
1140: 56 49 45 57 20 76 36 31 28 61 2c 62 2c 63 2c 64  VIEW v61(a,b,c,d
1150: 2c 65 29 20 41 53 0a 20 20 53 45 4c 45 43 54 20  ,e) AS.  SELECT 
1160: 74 32 2e 61 2c 74 33 2e 62 2c 74 32 2e 63 2c 74  t2.a,t3.b,t2.c,t
1170: 33 2e 64 2c 74 32 2e 65 0a 20 20 20 20 46 52 4f  3.d,t2.e.    FRO
1180: 4d 20 74 32 20 4c 45 46 54 20 4a 4f 49 4e 20 74  M t2 LEFT JOIN t
1190: 33 20 4f 4e 20 28 74 32 2e 61 3d 74 33 2e 61 29  3 ON (t2.a=t3.a)
11a0: 3b 0a 43 52 45 41 54 45 20 56 49 45 57 20 76 36  ;.CREATE VIEW v6
11b0: 32 28 61 2c 62 2c 63 2c 64 2c 65 29 20 41 53 0a  2(a,b,c,d,e) AS.
11c0: 20 20 53 45 4c 45 43 54 20 74 31 2e 61 2c 74 32    SELECT t1.a,t2
11d0: 2e 62 2c 74 33 2e 63 2c 74 34 2e 64 2c 74 35 2e  .b,t3.c,t4.d,t5.
11e0: 62 0a 20 20 20 20 46 52 4f 4d 20 74 31 20 4a 4f  b.    FROM t1 JO
11f0: 49 4e 20 74 32 20 4f 4e 20 28 74 31 2e 61 3d 74  IN t2 ON (t1.a=t
1200: 32 2e 62 29 0a 20 20 20 20 20 20 20 20 20 20 20  2.b).           
1210: 20 4a 4f 49 4e 20 74 33 20 4f 4e 20 28 74 31 2e   JOIN t3 ON (t1.
1220: 61 3d 74 33 2e 61 29 0a 20 20 20 20 20 20 20 20  a=t3.a).        
1230: 20 20 20 20 4a 4f 49 4e 20 74 34 20 4f 4e 20 28      JOIN t4 ON (
1240: 74 34 2e 62 3d 74 33 2e 62 29 0a 20 20 20 20 20  t4.b=t3.b).     
1250: 20 20 20 20 20 20 20 4c 45 46 54 20 4a 4f 49 4e         LEFT JOIN
1260: 20 74 35 20 4f 4e 20 28 74 35 2e 61 3d 74 31 2e   t5 ON (t5.a=t1.
1270: 63 29 3b 0a 43 52 45 41 54 45 20 56 49 45 57 20  c);.CREATE VIEW 
1280: 76 37 30 28 61 2c 62 2c 63 2c 64 2c 65 29 20 41  v70(a,b,c,d,e) A
1290: 53 0a 20 20 57 49 54 48 20 52 45 43 55 52 53 49  S.  WITH RECURSI
12a0: 56 45 20 63 30 28 78 29 20 41 53 20 28 56 41 4c  VE c0(x) AS (VAL
12b0: 55 45 53 28 31 29 20 55 4e 49 4f 4e 20 41 4c 4c  UES(1) UNION ALL
12c0: 20 53 45 4c 45 43 54 20 78 2b 31 20 46 52 4f 4d   SELECT x+1 FROM
12d0: 20 63 30 20 57 48 45 52 45 20 78 3c 39 29 0a 20   c0 WHERE x<9). 
12e0: 20 53 45 4c 45 43 54 20 78 2c 20 62 2c 20 63 2c   SELECT x, b, c,
12f0: 20 64 2c 20 65 20 46 52 4f 4d 20 63 30 20 4a 4f   d, e FROM c0 JO
1300: 49 4e 20 74 31 20 4f 4e 20 28 74 31 2e 61 3d 35  IN t1 ON (t1.a=5
1310: 30 2d 63 30 2e 78 29 3b 0a 43 4f 4d 4d 49 54 3b  0-c0.x);.COMMIT;
1320: 0a 56 41 43 55 55 4d 3b 0a 2e 73 68 65 6c 6c 20  .VACUUM;..shell 
1330: 62 69 6e 32 63 20 74 65 73 74 64 62 30 31 2e 64  bin2c testdb01.d
1340: 62 0a                                            b.