/ Hex Artifact Content
Login

Artifact 1d8c1134e1488a35c6fa205b2f52e72fc220972d946c59492d10bba01d6fecd4:


0000: 23 20 32 30 31 34 2d 31 30 2d 32 34 0a 23 0a 23  # 2014-10-24.#.#
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 2a 2a 0a 23 0a 23 20 54 68 69 73 20 66 69  ****.#.# This fi
0170: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65  le implements re
0180: 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20 66  gression tests f
0190: 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  or SQLite librar
01a0: 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75 73 20  y.  The.# focus 
01b0: 6f 66 20 74 68 69 73 20 73 63 72 69 70 74 20 69  of this script i
01c0: 73 20 74 65 73 74 69 6e 67 20 61 75 74 6f 6d 61  s testing automa
01d0: 74 69 63 20 69 6e 64 65 78 20 63 72 65 61 74 69  tic index creati
01e0: 6f 6e 20 6c 6f 67 69 63 2c 0a 23 20 61 6e 64 20  on logic,.# and 
01f0: 73 70 65 63 69 66 69 63 61 6c 6c 79 20 65 6e 73  specifically ens
0200: 75 72 69 6e 67 20 74 68 61 74 20 61 75 74 6f 6d  uring that autom
0210: 61 74 69 63 20 69 6e 64 65 78 65 73 20 63 61 6e  atic indexes can
0220: 20 62 65 20 75 73 65 64 20 77 69 74 68 0a 23 20   be used with.# 
0230: 63 6f 2d 72 6f 75 74 69 6e 65 20 73 75 62 71 75  co-routine subqu
0240: 65 72 69 65 73 2e 0a 23 0a 0a 73 65 74 20 74 65  eries..#..set te
0250: 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e  stdir [file dirn
0260: 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72  ame $argv0].sour
0270: 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74  ce $testdir/test
0280: 65 72 2e 74 63 6c 0a 73 65 74 20 74 65 73 74 70  er.tcl.set testp
0290: 72 65 66 69 78 20 61 75 74 6f 69 6e 64 65 78 35  refix autoindex5
02a0: 0a 0a 23 20 53 63 68 65 6d 61 20 69 73 20 66 72  ..# Schema is fr
02b0: 6f 6d 20 74 68 65 20 44 65 62 69 61 6e 20 73 65  om the Debian se
02c0: 63 75 72 69 74 79 20 64 61 74 61 62 61 73 65 0a  curity database.
02d0: 23 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  #.do_execsql_tes
02e0: 74 20 61 75 74 6f 69 6e 64 65 78 35 2d 31 2e 30  t autoindex5-1.0
02f0: 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c   {.  CREATE TABL
0300: 45 20 73 6f 75 72 63 65 5f 70 61 63 6b 61 67 65  E source_package
0310: 5f 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20  _status.        
0320: 20 20 28 62 75 67 5f 6e 61 6d 65 20 54 45 58 54    (bug_name TEXT
0330: 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 20   NOT NULL,.     
0340: 20 20 20 20 20 20 70 61 63 6b 61 67 65 20 49 4e        package IN
0350: 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 2c 0a  TEGER NOT NULL,.
0360: 20 20 20 20 20 20 20 20 20 20 20 76 75 6c 6e 65             vulne
0370: 72 61 62 6c 65 20 49 4e 54 45 47 45 52 20 4e 4f  rable INTEGER NO
0380: 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20 20 20  T NULL,.        
0390: 20 20 20 75 72 67 65 6e 63 79 20 54 45 58 54 20     urgency TEXT 
03a0: 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20  NOT NULL,.      
03b0: 20 20 20 20 20 50 52 49 4d 41 52 59 20 4b 45 59       PRIMARY KEY
03c0: 20 28 62 75 67 5f 6e 61 6d 65 2c 20 70 61 63 6b   (bug_name, pack
03d0: 61 67 65 29 29 3b 0a 20 20 43 52 45 41 54 45 20  age));.  CREATE 
03e0: 49 4e 44 45 58 20 73 6f 75 72 63 65 5f 70 61 63  INDEX source_pac
03f0: 6b 61 67 65 5f 73 74 61 74 75 73 5f 70 61 63 6b  kage_status_pack
0400: 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  age.            
0410: 20 20 4f 4e 20 73 6f 75 72 63 65 5f 70 61 63 6b    ON source_pack
0420: 61 67 65 5f 73 74 61 74 75 73 28 70 61 63 6b 61  age_status(packa
0430: 67 65 29 3b 0a 20 20 0a 20 20 43 52 45 41 54 45  ge);.  .  CREATE
0440: 20 54 41 42 4c 45 20 73 6f 75 72 63 65 5f 70 61   TABLE source_pa
0450: 63 6b 61 67 65 73 0a 20 20 20 20 20 20 20 20 20  ckages.         
0460: 20 20 20 20 20 28 6e 61 6d 65 20 54 45 58 54 20       (name TEXT 
0470: 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20  NOT NULL,.      
0480: 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65 20          release 
0490: 54 45 58 54 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 20  TEXT NOT NULL,. 
04a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62               sub
04b0: 72 65 6c 65 61 73 65 20 54 45 58 54 20 4e 4f 54  release TEXT NOT
04c0: 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20 20 20 20   NULL,.         
04d0: 20 20 20 20 20 61 72 63 68 69 76 65 20 54 45 58       archive TEX
04e0: 54 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20  T NOT NULL,.    
04f0: 20 20 20 20 20 20 20 20 20 20 76 65 72 73 69 6f            versio
0500: 6e 20 54 45 58 54 20 4e 4f 54 20 4e 55 4c 4c 2c  n TEXT NOT NULL,
0510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76  .              v
0520: 65 72 73 69 6f 6e 5f 69 64 20 49 4e 54 45 47 45  ersion_id INTEGE
0530: 52 20 4e 4f 54 20 4e 55 4c 4c 20 44 45 46 41 55  R NOT NULL DEFAU
0540: 4c 54 20 30 2c 0a 20 20 20 20 20 20 20 20 20 20  LT 0,.          
0550: 20 20 20 20 50 52 49 4d 41 52 59 20 4b 45 59 20      PRIMARY KEY 
0560: 28 6e 61 6d 65 2c 20 72 65 6c 65 61 73 65 2c 20  (name, release, 
0570: 73 75 62 72 65 6c 65 61 73 65 2c 20 61 72 63 68  subrelease, arch
0580: 69 76 65 29 29 3b 0a 20 20 0a 20 20 43 52 45 41  ive));.  .  CREA
0590: 54 45 20 54 41 42 4c 45 20 62 75 67 73 0a 20 20  TE TABLE bugs.  
05a0: 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 54 45          (name TE
05b0: 58 54 20 4e 4f 54 20 4e 55 4c 4c 20 50 52 49 4d  XT NOT NULL PRIM
05c0: 41 52 59 20 4b 45 59 2c 0a 20 20 20 20 20 20 20  ARY KEY,.       
05d0: 20 20 20 20 63 76 65 5f 73 74 61 74 75 73 20 54      cve_status T
05e0: 45 58 54 20 4e 4f 54 20 4e 55 4c 4c 0a 20 20 20  EXT NOT NULL.   
05f0: 20 20 20 20 20 20 20 20 20 20 20 20 43 48 45 43              CHEC
0600: 4b 20 28 63 76 65 5f 73 74 61 74 75 73 20 49 4e  K (cve_status IN
0610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0620: 20 20 20 20 20 20 20 28 27 27 2c 20 27 43 41 4e         ('', 'CAN
0630: 44 49 44 41 54 45 27 2c 20 27 41 53 53 49 47 4e  DIDATE', 'ASSIGN
0640: 45 44 27 2c 20 27 52 45 53 45 52 56 45 44 27 2c  ED', 'RESERVED',
0650: 20 27 52 45 4a 45 43 54 45 44 27 29 29 2c 0a 20   'REJECTED')),. 
0660: 20 20 20 20 20 20 20 20 20 20 6e 6f 74 5f 66 6f            not_fo
0670: 72 5f 75 73 20 49 4e 54 45 47 45 52 20 4e 4f 54  r_us INTEGER NOT
0680: 20 4e 55 4c 4c 20 43 48 45 43 4b 20 28 6e 6f 74   NULL CHECK (not
0690: 5f 66 6f 72 5f 75 73 20 49 4e 20 28 30 2c 20 31  _for_us IN (0, 1
06a0: 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 64  )),.           d
06b0: 65 73 63 72 69 70 74 69 6f 6e 20 54 45 58 54 20  escription TEXT 
06c0: 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20  NOT NULL,.      
06d0: 20 20 20 20 20 72 65 6c 65 61 73 65 5f 64 61 74       release_dat
06e0: 65 20 54 45 58 54 20 4e 4f 54 20 4e 55 4c 4c 2c  e TEXT NOT NULL,
06f0: 0a 20 20 20 20 20 20 20 20 20 20 20 73 6f 75 72  .           sour
0700: 63 65 5f 66 69 6c 65 20 54 45 58 54 20 4e 4f 54  ce_file TEXT NOT
0710: 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20 20 20 20   NULL,.         
0720: 20 20 73 6f 75 72 63 65 5f 6c 69 6e 65 20 49 4e    source_line IN
0730: 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 29 3b  TEGER NOT NULL);
0740: 0a 20 20 0a 20 20 43 52 45 41 54 45 20 54 41 42  .  .  CREATE TAB
0750: 4c 45 20 70 61 63 6b 61 67 65 5f 6e 6f 74 65 73  LE package_notes
0760: 0a 20 20 20 20 20 20 20 20 20 20 28 69 64 20 49  .          (id I
0770: 4e 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 20  NTEGER NOT NULL 
0780: 50 52 49 4d 41 52 59 20 4b 45 59 2c 0a 20 20 20  PRIMARY KEY,.   
0790: 20 20 20 20 20 20 20 20 62 75 67 5f 6e 61 6d 65          bug_name
07a0: 20 54 45 58 54 20 4e 4f 54 20 4e 55 4c 4c 2c 0a   TEXT NOT NULL,.
07b0: 20 20 20 20 20 20 20 20 20 20 20 70 61 63 6b 61             packa
07c0: 67 65 20 54 45 58 54 20 4e 4f 54 20 4e 55 4c 4c  ge TEXT NOT NULL
07d0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 66 69 78  ,.           fix
07e0: 65 64 5f 76 65 72 73 69 6f 6e 20 54 45 58 54 0a  ed_version TEXT.
07f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
0800: 48 45 43 4b 20 28 66 69 78 65 64 5f 76 65 72 73  HECK (fixed_vers
0810: 69 6f 6e 20 49 53 20 4e 55 4c 4c 20 4f 52 20 66  ion IS NULL OR f
0820: 69 78 65 64 5f 76 65 72 73 69 6f 6e 20 3c 3e 20  ixed_version <> 
0830: 27 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ''),.           
0840: 66 69 78 65 64 5f 76 65 72 73 69 6f 6e 5f 69 64  fixed_version_id
0850: 20 49 4e 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c   INTEGER NOT NUL
0860: 4c 20 44 45 46 41 55 4c 54 20 30 2c 0a 20 20 20  L DEFAULT 0,.   
0870: 20 20 20 20 20 20 20 20 72 65 6c 65 61 73 65 20          release 
0880: 54 45 58 54 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 20  TEXT NOT NULL,. 
0890: 20 20 20 20 20 20 20 20 20 20 70 61 63 6b 61 67            packag
08a0: 65 5f 6b 69 6e 64 20 54 45 58 54 20 4e 4f 54 20  e_kind TEXT NOT 
08b0: 4e 55 4c 4c 20 44 45 46 41 55 4c 54 20 27 75 6e  NULL DEFAULT 'un
08c0: 6b 6e 6f 77 6e 27 2c 0a 20 20 20 20 20 20 20 20  known',.        
08d0: 20 20 20 75 72 67 65 6e 63 79 20 54 45 58 54 20     urgency TEXT 
08e0: 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20  NOT NULL,.      
08f0: 20 20 20 20 20 62 75 67 5f 6f 72 69 67 69 6e 20       bug_origin 
0900: 54 45 58 54 20 4e 4f 54 20 4e 55 4c 4c 20 44 45  TEXT NOT NULL DE
0910: 46 41 55 4c 54 20 27 27 29 3b 0a 20 20 43 52 45  FAULT '');.  CRE
0920: 41 54 45 20 49 4e 44 45 58 20 70 61 63 6b 61 67  ATE INDEX packag
0930: 65 5f 6e 6f 74 65 73 5f 70 61 63 6b 61 67 65 0a  e_notes_package.
0940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f 4e                ON
0950: 20 70 61 63 6b 61 67 65 5f 6e 6f 74 65 73 28 70   package_notes(p
0960: 61 63 6b 61 67 65 29 3b 0a 20 20 43 52 45 41 54  ackage);.  CREAT
0970: 45 20 55 4e 49 51 55 45 20 49 4e 44 45 58 20 70  E UNIQUE INDEX p
0980: 61 63 6b 61 67 65 5f 6e 6f 74 65 73 5f 62 75 67  ackage_notes_bug
0990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f  .              O
09a0: 4e 20 70 61 63 6b 61 67 65 5f 6e 6f 74 65 73 28  N package_notes(
09b0: 62 75 67 5f 6e 61 6d 65 2c 20 70 61 63 6b 61 67  bug_name, packag
09c0: 65 2c 20 72 65 6c 65 61 73 65 29 3b 0a 20 20 0a  e, release);.  .
09d0: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 64    CREATE TABLE d
09e0: 65 62 69 61 6e 5f 62 75 67 73 0a 20 20 20 20 20  ebian_bugs.     
09f0: 20 20 20 20 20 28 62 75 67 20 49 4e 54 45 47 45       (bug INTEGE
0a00: 52 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20  R NOT NULL,.    
0a10: 20 20 20 20 20 20 20 6e 6f 74 65 20 49 4e 54 45         note INTE
0a20: 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 20 20  GER NOT NULL,.  
0a30: 20 20 20 20 20 20 20 20 20 50 52 49 4d 41 52 59           PRIMARY
0a40: 20 4b 45 59 20 28 62 75 67 2c 20 6e 6f 74 65 29   KEY (bug, note)
0a50: 29 3b 0a 20 20 0a 20 20 0a 20 20 43 52 45 41 54  );.  .  .  CREAT
0a60: 45 20 56 49 45 57 20 64 65 62 69 61 6e 5f 63 76  E VIEW debian_cv
0a70: 65 20 41 53 0a 20 20 20 20 20 20 20 20 20 20 20  e AS.           
0a80: 20 20 20 53 45 4c 45 43 54 20 44 49 53 54 49 4e     SELECT DISTIN
0a90: 43 54 20 64 65 62 69 61 6e 5f 62 75 67 73 2e 62  CT debian_bugs.b
0aa0: 75 67 2c 20 73 74 2e 62 75 67 5f 6e 61 6d 65 0a  ug, st.bug_name.
0ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 52                FR
0ac0: 4f 4d 20 70 61 63 6b 61 67 65 5f 6e 6f 74 65 73  OM package_notes
0ad0: 2c 20 64 65 62 69 61 6e 5f 62 75 67 73 2c 20 73  , debian_bugs, s
0ae0: 6f 75 72 63 65 5f 70 61 63 6b 61 67 65 5f 73 74  ource_package_st
0af0: 61 74 75 73 20 41 53 20 73 74 0a 20 20 20 20 20  atus AS st.     
0b00: 20 20 20 20 20 20 20 20 20 57 48 45 52 45 20 70           WHERE p
0b10: 61 63 6b 61 67 65 5f 6e 6f 74 65 73 2e 62 75 67  ackage_notes.bug
0b20: 5f 6e 61 6d 65 20 3d 20 73 74 2e 62 75 67 5f 6e  _name = st.bug_n
0b30: 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20  ame.            
0b40: 20 20 41 4e 44 20 64 65 62 69 61 6e 5f 62 75 67    AND debian_bug
0b50: 73 2e 6e 6f 74 65 20 3d 20 70 61 63 6b 61 67 65  s.note = package
0b60: 5f 6e 6f 74 65 73 2e 69 64 0a 20 20 20 20 20 20  _notes.id.      
0b70: 20 20 20 20 20 20 20 20 4f 52 44 45 52 20 42 59          ORDER BY
0b80: 20 64 65 62 69 61 6e 5f 62 75 67 73 2e 62 75 67   debian_bugs.bug
0b90: 3b 0a 7d 20 7b 7d 0a 0a 23 20 54 68 65 20 66 6f  ;.} {}..# The fo
0ba0: 6c 6c 6f 77 69 6e 67 20 71 75 65 72 79 20 73 68  llowing query sh
0bb0: 6f 75 6c 64 20 75 73 65 20 61 6e 20 61 75 74 6f  ould use an auto
0bc0: 6d 61 74 69 63 20 69 6e 64 65 78 20 66 6f 72 20  matic index for 
0bd0: 74 68 65 20 76 69 65 77 0a 23 20 69 6e 20 46 52  the view.# in FR
0be0: 4f 4d 20 63 6c 61 75 73 65 20 6f 66 20 74 68 65  OM clause of the
0bf0: 20 73 75 62 71 75 65 72 79 20 6f 66 20 74 68 65   subquery of the
0c00: 20 73 65 63 6f 6e 64 20 72 65 73 75 6c 74 20 63   second result c
0c10: 6f 6c 75 6d 6e 2e 0a 23 0a 64 6f 5f 65 71 70 5f  olumn..#.do_eqp_
0c20: 74 65 73 74 20 61 75 74 6f 69 6e 64 65 78 35 2d  test autoindex5-
0c30: 31 2e 31 20 7b 0a 20 20 53 45 4c 45 43 54 0a 20  1.1 {.  SELECT. 
0c40: 20 20 20 73 74 2e 62 75 67 5f 6e 61 6d 65 2c 0a     st.bug_name,.
0c50: 20 20 20 20 28 53 45 4c 45 43 54 20 41 4c 4c 20      (SELECT ALL 
0c60: 64 65 62 69 61 6e 5f 63 76 65 2e 62 75 67 20 46  debian_cve.bug F
0c70: 52 4f 4d 20 64 65 62 69 61 6e 5f 63 76 65 0a 20  ROM debian_cve. 
0c80: 20 20 20 20 20 57 48 45 52 45 20 64 65 62 69 61       WHERE debia
0c90: 6e 5f 63 76 65 2e 62 75 67 5f 6e 61 6d 65 20 3d  n_cve.bug_name =
0ca0: 20 73 74 2e 62 75 67 5f 6e 61 6d 65 0a 20 20 20   st.bug_name.   
0cb0: 20 20 20 4f 52 44 45 52 20 42 59 20 64 65 62 69     ORDER BY debi
0cc0: 61 6e 5f 63 76 65 2e 62 75 67 29 2c 0a 20 20 20  an_cve.bug),.   
0cd0: 20 73 70 2e 72 65 6c 65 61 73 65 0a 20 20 46 52   sp.release.  FR
0ce0: 4f 4d 0a 20 20 20 20 20 73 6f 75 72 63 65 5f 70  OM.     source_p
0cf0: 61 63 6b 61 67 65 5f 73 74 61 74 75 73 20 41 53  ackage_status AS
0d00: 20 73 74 2c 0a 20 20 20 20 20 73 6f 75 72 63 65   st,.     source
0d10: 5f 70 61 63 6b 61 67 65 73 20 41 53 20 73 70 2c  _packages AS sp,
0d20: 0a 20 20 20 20 20 62 75 67 73 0a 20 20 57 48 45  .     bugs.  WHE
0d30: 52 45 0a 20 20 20 20 20 73 70 2e 72 6f 77 69 64  RE.     sp.rowid
0d40: 20 3d 20 73 74 2e 70 61 63 6b 61 67 65 0a 20 20   = st.package.  
0d50: 20 20 20 41 4e 44 20 73 74 2e 62 75 67 5f 6e 61     AND st.bug_na
0d60: 6d 65 20 3d 20 62 75 67 73 2e 6e 61 6d 65 0a 20  me = bugs.name. 
0d70: 20 20 20 20 41 4e 44 20 28 20 73 74 2e 62 75 67      AND ( st.bug
0d80: 5f 6e 61 6d 65 20 4c 49 4b 45 20 27 43 56 45 2d  _name LIKE 'CVE-
0d90: 25 27 20 4f 52 20 73 74 2e 62 75 67 5f 6e 61 6d  %' OR st.bug_nam
0da0: 65 20 4c 49 4b 45 20 27 54 45 4d 50 2d 25 27 20  e LIKE 'TEMP-%' 
0db0: 29 0a 20 20 20 20 20 41 4e 44 20 28 20 73 70 2e  ).     AND ( sp.
0dc0: 72 65 6c 65 61 73 65 20 3d 20 27 73 69 64 27 20  release = 'sid' 
0dd0: 4f 52 20 73 70 2e 72 65 6c 65 61 73 65 20 3d 20  OR sp.release = 
0de0: 27 73 74 72 65 74 63 68 27 20 4f 52 20 73 70 2e  'stretch' OR sp.
0df0: 72 65 6c 65 61 73 65 20 3d 20 27 6a 65 73 73 69  release = 'jessi
0e00: 65 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 4f  e'.            O
0e10: 52 20 73 70 2e 72 65 6c 65 61 73 65 20 3d 20 27  R sp.release = '
0e20: 77 68 65 65 7a 79 27 20 4f 52 20 73 70 2e 72 65  wheezy' OR sp.re
0e30: 6c 65 61 73 65 20 3d 20 27 73 71 75 65 65 7a 65  lease = 'squeeze
0e40: 27 20 29 0a 20 20 4f 52 44 45 52 20 42 59 20 73  ' ).  ORDER BY s
0e50: 70 2e 6e 61 6d 65 2c 20 73 74 2e 62 75 67 5f 6e  p.name, st.bug_n
0e60: 61 6d 65 2c 20 73 70 2e 72 65 6c 65 61 73 65 2c  ame, sp.release,
0e70: 20 73 70 2e 73 75 62 72 65 6c 65 61 73 65 3b 0a   sp.subrelease;.
0e80: 7d 20 7b 53 45 41 52 43 48 20 53 55 42 51 55 45  } {SEARCH SUBQUE
0e90: 52 59 20 2a 20 55 53 49 4e 47 20 41 55 54 4f 4d  RY * USING AUTOM
0ea0: 41 54 49 43 20 43 4f 56 45 52 49 4e 47 20 49 4e  ATIC COVERING IN
0eb0: 44 45 58 20 28 62 75 67 5f 6e 61 6d 65 3d 3f 29  DEX (bug_name=?)
0ec0: 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  }..#------------
0ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20  -------------.# 
0f10: 54 65 73 74 20 74 68 61 74 20 74 69 63 6b 65 74  Test that ticket
0f20: 20 5b 38 61 32 61 64 65 63 31 5d 20 68 61 73 20   [8a2adec1] has 
0f30: 62 65 65 6e 20 66 69 78 65 64 2e 0a 23 0a 64 6f  been fixed..#.do
0f40: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 32 2e  _execsql_test 2.
0f50: 31 20 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42  1 {.  CREATE TAB
0f60: 4c 45 20 6f 6e 65 28 6f 29 3b 0a 20 20 49 4e 53  LE one(o);.  INS
0f70: 45 52 54 20 49 4e 54 4f 20 6f 6e 65 20 44 45 46  ERT INTO one DEF
0f80: 41 55 4c 54 20 56 41 4c 55 45 53 3b 0a 0a 20 20  AULT VALUES;..  
0f90: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28  CREATE TABLE t1(
0fa0: 78 2c 20 7a 29 3b 0a 20 20 49 4e 53 45 52 54 20  x, z);.  INSERT 
0fb0: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 27  INTO t1 VALUES('
0fc0: 61 61 61 27 2c 20 34 2e 30 29 3b 0a 20 20 49 4e  aaa', 4.0);.  IN
0fd0: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0fe0: 55 45 53 28 27 61 61 61 27 2c 20 34 2e 30 29 3b  UES('aaa', 4.0);
0ff0: 0a 20 20 43 52 45 41 54 45 20 56 49 45 57 20 76  .  CREATE VIEW v
1000: 76 76 20 41 53 0a 20 20 20 20 53 45 4c 45 43 54  vv AS.    SELECT
1010: 20 2a 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 55   * FROM t1.    U
1020: 4e 49 4f 4e 20 41 4c 4c 0a 20 20 20 20 53 45 4c  NION ALL.    SEL
1030: 45 43 54 20 30 2c 20 30 20 57 48 45 52 45 20 30  ECT 0, 0 WHERE 0
1040: 3b 0a 0a 20 20 53 45 4c 45 43 54 20 28 0a 20 20  ;..  SELECT (.  
1050: 20 20 20 20 53 45 4c 45 43 54 20 73 75 6d 28 7a      SELECT sum(z
1060: 29 20 46 52 4f 4d 20 76 76 76 20 57 48 45 52 45  ) FROM vvv WHERE
1070: 20 78 3d 27 61 61 61 27 0a 20 20 29 20 46 52 4f   x='aaa'.  ) FRO
1080: 4d 20 6f 6e 65 3b 0a 7d 20 7b 38 2e 30 7d 0a 0a  M one;.} {8.0}..
1090: 23 20 54 69 63 6b 65 74 20 68 74 74 70 73 3a 2f  # Ticket https:/
10a0: 2f 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f  /www.sqlite.org/
10b0: 73 72 63 2f 69 6e 66 6f 2f 37 38 37 66 61 37 31  src/info/787fa71
10c0: 36 62 65 33 61 37 66 36 35 0a 23 20 53 65 67 66  6be3a7f65.# Segf
10d0: 61 75 6c 74 20 64 75 65 20 74 6f 20 6d 75 6c 74  ault due to mult
10e0: 69 70 6c 65 20 75 73 65 73 20 6f 66 20 74 68 65  iple uses of the
10f0: 20 73 61 6d 65 20 73 75 62 71 75 65 72 79 20 77   same subquery w
1100: 68 65 72 65 20 74 68 65 0a 23 20 73 75 62 71 75  here the.# subqu
1110: 65 72 79 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74  ery is implement
1120: 65 64 20 76 69 61 20 63 6f 72 6f 75 74 69 6e 65  ed via coroutine
1130: 2e 0a 23 0a 69 66 63 61 70 61 62 6c 65 20 77 69  ..#.ifcapable wi
1140: 6e 64 6f 77 66 75 6e 63 20 7b 0a 73 71 6c 69 74  ndowfunc {.sqlit
1150: 65 33 20 64 62 20 3a 6d 65 6d 6f 72 79 3a 0a 64  e3 db :memory:.d
1160: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33  o_execsql_test 3
1170: 2e 30 20 7b 0a 20 20 2d 2d 20 54 68 69 73 20 69  .0 {.  -- This i
1180: 73 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 74  s the original t
1190: 65 73 74 20 63 61 73 65 20 72 65 70 6f 72 74 65  est case reporte
11a0: 64 20 6f 6e 20 74 68 65 20 6d 61 69 6c 69 6e 67  d on the mailing
11b0: 20 6c 69 73 74 0a 20 20 43 52 45 41 54 45 20 54   list.  CREATE T
11c0: 41 42 4c 45 20 61 72 74 69 73 74 73 20 28 0a 20  ABLE artists (. 
11d0: 20 20 20 69 64 20 69 6e 74 65 67 65 72 20 4e 4f     id integer NO
11e0: 54 20 4e 55 4c 4c 20 50 52 49 4d 41 52 59 20 4b  T NULL PRIMARY K
11f0: 45 59 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  EY AUTOINCREMENT
1200: 2c 0a 20 20 20 20 6e 61 6d 65 20 76 61 72 63 68  ,.    name varch
1210: 61 72 28 32 35 35 29 0a 20 20 29 3b 0a 20 20 43  ar(255).  );.  C
1220: 52 45 41 54 45 20 54 41 42 4c 45 20 61 6c 62 75  REATE TABLE albu
1230: 6d 73 20 28 0a 20 20 20 20 69 64 20 69 6e 74 65  ms (.    id inte
1240: 67 65 72 20 4e 4f 54 20 4e 55 4c 4c 20 50 52 49  ger NOT NULL PRI
1250: 4d 41 52 59 20 4b 45 59 20 41 55 54 4f 49 4e 43  MARY KEY AUTOINC
1260: 52 45 4d 45 4e 54 2c 0a 20 20 20 20 6e 61 6d 65  REMENT,.    name
1270: 20 76 61 72 63 68 61 72 28 32 35 35 29 2c 0a 20   varchar(255),. 
1280: 20 20 20 61 72 74 69 73 74 5f 69 64 20 69 6e 74     artist_id int
1290: 65 67 65 72 20 52 45 46 45 52 45 4e 43 45 53 20  eger REFERENCES 
12a0: 61 72 74 69 73 74 73 0a 20 20 29 3b 0a 20 20 49  artists.  );.  I
12b0: 4e 53 45 52 54 20 49 4e 54 4f 20 61 72 74 69 73  NSERT INTO artis
12c0: 74 73 20 28 6e 61 6d 65 29 20 56 41 4c 55 45 53  ts (name) VALUES
12d0: 20 28 27 41 72 27 29 3b 0a 20 20 49 4e 53 45 52   ('Ar');.  INSER
12e0: 54 20 49 4e 54 4f 20 61 6c 62 75 6d 73 20 28 6e  T INTO albums (n
12f0: 61 6d 65 2c 20 61 72 74 69 73 74 5f 69 64 29 20  ame, artist_id) 
1300: 56 41 4c 55 45 53 20 28 27 41 6c 27 2c 20 31 29  VALUES ('Al', 1)
1310: 3b 0a 20 20 53 45 4c 45 43 54 20 61 72 74 69 73  ;.  SELECT artis
1320: 74 73 2e 2a 0a 20 20 46 52 4f 4d 20 61 72 74 69  ts.*.  FROM arti
1330: 73 74 73 0a 20 20 49 4e 4e 45 52 20 4a 4f 49 4e  sts.  INNER JOIN
1340: 20 61 72 74 69 73 74 73 20 41 53 20 27 62 27 20   artists AS 'b' 
1350: 4f 4e 20 28 62 2e 69 64 20 3d 20 61 72 74 69 73  ON (b.id = artis
1360: 74 73 2e 69 64 29 0a 20 20 57 48 45 52 45 20 28  ts.id).  WHERE (
1370: 61 72 74 69 73 74 73 2e 69 64 20 49 4e 20 28 0a  artists.id IN (.
1380: 20 20 20 20 53 45 4c 45 43 54 20 61 6c 62 75 6d      SELECT album
1390: 73 2e 61 72 74 69 73 74 5f 69 64 0a 20 20 20 20  s.artist_id.    
13a0: 46 52 4f 4d 20 61 6c 62 75 6d 73 0a 20 20 20 20  FROM albums.    
13b0: 57 48 45 52 45 20 28 28 6e 61 6d 65 20 3d 20 27  WHERE ((name = '
13c0: 41 6c 27 29 0a 20 20 20 20 20 20 41 4e 44 20 28  Al').      AND (
13d0: 61 6c 62 75 6d 73 2e 61 72 74 69 73 74 5f 69 64  albums.artist_id
13e0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 29 0a 20 20   IS NOT NULL).  
13f0: 20 20 20 20 41 4e 44 20 28 61 6c 62 75 6d 73 2e      AND (albums.
1400: 69 64 20 49 4e 20 28 0a 20 20 20 20 20 20 20 20  id IN (.        
1410: 53 45 4c 45 43 54 20 69 64 0a 20 20 20 20 20 20  SELECT id.      
1420: 20 20 46 52 4f 4d 20 28 0a 20 20 20 20 20 20 20    FROM (.       
1430: 20 20 20 53 45 4c 45 43 54 20 61 6c 62 75 6d 73     SELECT albums
1440: 2e 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20  .id,.           
1450: 20 20 20 20 20 20 72 6f 77 5f 6e 75 6d 62 65 72        row_number
1460: 28 29 20 4f 56 45 52 20 28 0a 20 20 20 20 20 20  () OVER (.      
1470: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 41 52               PAR
1480: 54 49 54 49 4f 4e 20 42 59 20 61 6c 62 75 6d 73  TITION BY albums
1490: 2e 61 72 74 69 73 74 5f 69 64 0a 20 20 20 20 20  .artist_id.     
14a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4f 52                OR
14b0: 44 45 52 20 42 59 20 6e 61 6d 65 0a 20 20 20 20  DER BY name.    
14c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 41               ) A
14d0: 53 20 27 78 27 0a 20 20 20 20 20 20 20 20 20 20  S 'x'.          
14e0: 46 52 4f 4d 20 61 6c 62 75 6d 73 0a 20 20 20 20  FROM albums.    
14f0: 20 20 20 20 20 20 57 48 45 52 45 20 28 6e 61 6d        WHERE (nam
1500: 65 20 3d 20 27 41 6c 27 29 0a 20 20 20 20 20 20  e = 'Al').      
1510: 20 20 29 20 41 53 20 27 74 31 27 0a 20 20 20 20    ) AS 't1'.    
1520: 20 20 20 20 57 48 45 52 45 20 28 78 20 3d 20 31      WHERE (x = 1
1530: 29 0a 20 20 20 20 20 20 29 29 0a 20 20 20 20 20  ).      )).     
1540: 20 41 4e 44 20 28 61 6c 62 75 6d 73 2e 69 64 20   AND (albums.id 
1550: 49 4e 20 28 31 2c 20 32 29 29 29 0a 20 20 29 29  IN (1, 2))).  ))
1560: 3b 0a 7d 20 7b 31 20 41 72 7d 0a 7d 20 3b 23 20  ;.} {1 Ar}.} ;# 
1570: 77 69 6e 64 6f 77 66 75 6e 63 0a 0a 23 20 54 68  windowfunc..# Th
1580: 65 20 72 65 6d 61 69 6e 69 6e 67 20 74 65 73 74  e remaining test
1590: 20 63 61 73 65 73 20 77 65 72 65 20 64 69 73 63   cases were disc
15a0: 6f 76 65 72 65 64 20 28 62 79 20 44 61 6e 29 20  overed (by Dan) 
15b0: 64 75 72 69 6e 67 20 74 72 6f 75 62 6c 65 2d 73  during trouble-s
15c0: 68 6f 6f 74 69 6e 67 0a 73 71 6c 69 74 65 33 20  hooting.sqlite3 
15d0: 64 62 20 3a 6d 65 6d 6f 72 79 3a 0a 64 6f 5f 65  db :memory:.do_e
15e0: 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 31 20  xecsql_test 3.1 
15f0: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
1600: 20 74 31 20 28 61 29 3b 20 49 4e 53 45 52 54 20   t1 (a); INSERT 
1610: 49 4e 54 4f 20 74 31 20 28 61 29 20 56 41 4c 55  INTO t1 (a) VALU
1620: 45 53 20 28 31 30 34 29 3b 0a 20 20 43 52 45 41  ES (104);.  CREA
1630: 54 45 20 54 41 42 4c 45 20 74 32 20 28 62 29 3b  TE TABLE t2 (b);
1640: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20   INSERT INTO t2 
1650: 28 62 29 20 56 41 4c 55 45 53 20 28 31 30 34 29  (b) VALUES (104)
1660: 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  ;.  CREATE TABLE
1670: 20 74 33 20 28 63 29 3b 20 49 4e 53 45 52 54 20   t3 (c); INSERT 
1680: 49 4e 54 4f 20 74 33 20 28 63 29 20 56 41 4c 55  INTO t3 (c) VALU
1690: 45 53 20 28 31 30 34 29 3b 0a 20 20 43 52 45 41  ES (104);.  CREA
16a0: 54 45 20 54 41 42 4c 45 20 74 34 20 28 64 29 3b  TE TABLE t4 (d);
16b0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 34 20   INSERT INTO t4 
16c0: 28 64 29 20 56 41 4c 55 45 53 20 28 31 30 34 29  (d) VALUES (104)
16d0: 3b 0a 20 20 53 45 4c 45 43 54 20 2a 0a 20 20 46  ;.  SELECT *.  F
16e0: 52 4f 4d 20 74 31 20 43 52 4f 53 53 20 4a 4f 49  ROM t1 CROSS JOI
16f0: 4e 20 74 32 20 4f 4e 20 28 74 31 2e 61 20 3d 20  N t2 ON (t1.a = 
1700: 74 32 2e 62 29 20 57 48 45 52 45 20 74 32 2e 62  t2.b) WHERE t2.b
1710: 20 49 4e 20 28 0a 20 20 20 20 53 45 4c 45 43 54   IN (.    SELECT
1720: 20 74 33 2e 63 0a 20 20 20 20 46 52 4f 4d 20 74   t3.c.    FROM t
1730: 33 0a 20 20 20 20 57 48 45 52 45 20 74 33 2e 63  3.    WHERE t3.c
1740: 20 49 4e 20 28 0a 20 20 20 20 20 20 53 45 4c 45   IN (.      SELE
1750: 43 54 20 64 20 46 52 4f 4d 20 28 53 45 4c 45 43  CT d FROM (SELEC
1760: 54 20 44 49 53 54 49 4e 43 54 20 64 20 46 52 4f  T DISTINCT d FRO
1770: 4d 20 74 34 29 20 41 53 20 78 20 57 48 45 52 45  M t4) AS x WHERE
1780: 20 78 2e 64 3d 31 30 34 0a 20 20 20 20 29 0a 20   x.d=104.    ). 
1790: 20 29 3b 0a 7d 20 7b 31 30 34 20 31 30 34 7d 0a   );.} {104 104}.
17a0: 73 71 6c 69 74 65 33 20 64 62 20 3a 6d 65 6d 6f  sqlite3 db :memo
17b0: 72 79 3a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ry:.do_execsql_t
17c0: 65 73 74 20 33 2e 32 20 7b 0a 20 20 43 52 45 41  est 3.2 {.  CREA
17d0: 54 45 20 54 41 42 4c 45 20 74 35 28 61 2c 20 62  TE TABLE t5(a, b
17e0: 2c 20 63 2c 20 64 29 3b 0a 20 20 43 52 45 41 54  , c, d);.  CREAT
17f0: 45 20 49 4e 44 45 58 20 74 35 61 20 4f 4e 20 74  E INDEX t5a ON t
1800: 35 28 61 29 3b 0a 20 20 43 52 45 41 54 45 20 49  5(a);.  CREATE I
1810: 4e 44 45 58 20 74 35 62 20 4f 4e 20 74 35 28 62  NDEX t5b ON t5(b
1820: 29 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c  );.  CREATE TABL
1830: 45 20 74 36 28 65 29 3b 0a 20 20 49 4e 53 45 52  E t6(e);.  INSER
1840: 54 20 49 4e 54 4f 20 74 36 20 56 41 4c 55 45 53  T INTO t6 VALUES
1850: 28 31 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e  (1);.  INSERT IN
1860: 54 4f 20 74 35 20 56 41 4c 55 45 53 28 31 2c 31  TO t5 VALUES(1,1
1870: 2c 31 2c 31 29 2c 20 28 32 2c 32 2c 32 2c 32 29  ,1,1), (2,2,2,2)
1880: 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  ;.  SELECT * FRO
1890: 4d 20 74 35 20 57 48 45 52 45 20 28 61 3d 31 20  M t5 WHERE (a=1 
18a0: 4f 52 20 62 3d 32 29 20 41 4e 44 20 63 20 49 4e  OR b=2) AND c IN
18b0: 20 28 0a 20 20 20 20 53 45 4c 45 43 54 20 65 20   (.    SELECT e 
18c0: 46 52 4f 4d 20 28 53 45 4c 45 43 54 20 44 49 53  FROM (SELECT DIS
18d0: 54 49 4e 43 54 20 65 20 46 52 4f 4d 20 74 36 29  TINCT e FROM t6)
18e0: 20 57 48 45 52 45 20 65 3d 31 0a 20 20 29 3b 0a   WHERE e=1.  );.
18f0: 7d 20 7b 31 20 31 20 31 20 31 7d 0a 73 71 6c 69  } {1 1 1 1}.sqli
1900: 74 65 33 20 64 62 20 3a 6d 65 6d 6f 72 79 3a 0a  te3 db :memory:.
1910: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
1920: 33 2e 33 20 7b 0a 20 20 43 52 45 41 54 45 20 54  3.3 {.  CREATE T
1930: 41 42 4c 45 20 74 31 28 61 31 2c 20 61 32 2c 20  ABLE t1(a1, a2, 
1940: 61 33 29 3b 0a 20 20 43 52 45 41 54 45 20 49 4e  a3);.  CREATE IN
1950: 44 45 58 20 74 31 61 32 20 4f 4e 20 74 31 28 61  DEX t1a2 ON t1(a
1960: 32 2c 20 61 31 29 3b 0a 20 20 43 52 45 41 54 45  2, a1);.  CREATE
1970: 20 49 4e 44 45 58 20 74 31 61 33 20 4f 4e 20 74   INDEX t1a3 ON t
1980: 31 28 61 33 2c 20 61 31 29 3b 0a 20 20 43 52 45  1(a3, a1);.  CRE
1990: 41 54 45 20 54 41 42 4c 45 20 74 32 28 64 29 3b  ATE TABLE t2(d);
19a0: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
19b0: 31 20 56 41 4c 55 45 53 28 33 2c 20 31 2c 20 31  1 VALUES(3, 1, 1
19c0: 29 2c 20 28 33 2c 20 32 2c 20 32 29 3b 0a 20 20  ), (3, 2, 2);.  
19d0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56  INSERT INTO t2 V
19e0: 41 4c 55 45 53 28 33 29 3b 0a 20 20 53 45 4c 45  ALUES(3);.  SELE
19f0: 43 54 20 2a 2c 20 27 78 27 20 46 52 4f 4d 20 74  CT *, 'x' FROM t
1a00: 31 20 57 48 45 52 45 20 28 61 32 3d 31 20 4f 52  1 WHERE (a2=1 OR
1a10: 20 61 33 3d 32 29 20 41 4e 44 20 61 31 20 3d 20   a3=2) AND a1 = 
1a20: 28 0a 20 20 20 20 53 45 4c 45 43 54 20 64 20 46  (.    SELECT d F
1a30: 52 4f 4d 20 28 53 45 4c 45 43 54 20 44 49 53 54  ROM (SELECT DIST
1a40: 49 4e 43 54 20 64 20 46 52 4f 4d 20 74 32 29 20  INCT d FROM t2) 
1a50: 57 48 45 52 45 20 64 3d 33 0a 20 20 29 3b 0a 7d  WHERE d=3.  );.}
1a60: 20 7b 33 20 31 20 31 20 78 20 33 20 32 20 32 20   {3 1 1 x 3 2 2 
1a70: 78 7d 0a 0a 0a 20 20 20 20 0a 0a 66 69 6e 69 73  x}...    ..finis
1a80: 68 5f 74 65 73 74 0a                             h_test.