/ Hex Artifact Content
Login

Artifact f8c52c41de6e5ca02f1845f3a46e18e25cadac00:


0000: 23 20 32 30 30 35 20 53 65 70 74 65 6d 62 65 72  # 2005 September
0010: 20 31 37 0a 23 0a 23 20 54 68 65 20 61 75 74 68   17.#.# The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67  place of.# a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23  is a blessing:.#
0080: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  .#    May you do
0090: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
00a0: 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  il..#    May you
00b0: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
00c0: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
00d0: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
00e0: 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  s..#    May you 
00f0: 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65  share freely, ne
0100: 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20  ver taking more 
0110: 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23  than you give..#
0120: 0a 23 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 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73  *********.# This
0170: 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73   file implements
0180: 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74   regression test
0190: 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62  s for SQLite lib
01a0: 72 61 72 79 2e 0a 23 0a 23 20 54 68 69 73 20 66  rary..#.# This f
01b0: 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ile implements t
01c0: 65 73 74 73 20 74 6f 20 76 65 72 69 66 79 20 74  ests to verify t
01d0: 68 61 74 20 74 69 63 6b 65 74 20 23 31 34 33 35  hat ticket #1435
01e0: 20 68 61 73 20 62 65 65 6e 0a 23 20 66 69 78 65   has been.# fixe
01f0: 64 2e 20 20 0a 23 0a 23 0a 23 20 24 49 64 3a 20  d.  .#.#.# $Id: 
0200: 74 6b 74 31 34 33 35 2e 74 65 73 74 2c 76 20 31  tkt1435.test,v 1
0210: 2e 32 20 32 30 30 36 2f 30 31 2f 31 37 20 30 39  .2 2006/01/17 09
0220: 3a 33 35 3a 30 32 20 64 61 6e 69 65 6c 6b 31 39  :35:02 danielk19
0230: 37 37 20 45 78 70 20 24 0a 0a 73 65 74 20 74 65  77 Exp $..set te
0240: 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e  stdir [file dirn
0250: 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72  ame $argv0].sour
0260: 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74  ce $testdir/test
0270: 65 72 2e 74 63 6c 0a 0a 69 66 63 61 70 61 62 6c  er.tcl..ifcapabl
0280: 65 20 21 6d 65 6d 6f 72 79 64 62 20 7b 0a 20 20  e !memorydb {.  
0290: 66 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65  finish_test.  re
02a0: 74 75 72 6e 0a 7d 0a 0a 23 20 43 6f 6e 73 74 72  turn.}..# Constr
02b0: 75 63 74 20 74 68 65 20 73 61 6d 70 6c 65 20 64  uct the sample d
02c0: 61 74 61 62 61 73 65 2e 0a 23 0a 64 6f 5f 74 65  atabase..#.do_te
02d0: 73 74 20 74 6b 74 31 34 33 35 2d 31 2e 30 20 7b  st tkt1435-1.0 {
02e0: 0a 20 20 73 71 6c 69 74 65 33 20 64 62 20 3a 6d  .  sqlite3 db :m
02f0: 65 6d 6f 72 79 3a 0a 20 20 65 78 65 63 73 71 6c  emory:.  execsql
0300: 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41   {.    CREATE TA
0310: 42 4c 45 20 49 6e 73 74 61 6e 63 65 73 28 0a 20  BLE Instances(. 
0320: 20 20 20 09 69 6e 73 74 61 6e 63 65 49 64 20 49     .instanceId I
0330: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
0340: 45 59 2c 0a 20 20 20 20 09 74 72 6f 76 65 4e 61  EY,.    .troveNa
0350: 6d 65 20 53 54 52 2c 0a 20 20 20 20 09 76 65 72  me STR,.    .ver
0360: 73 69 6f 6e 49 64 20 49 4e 54 2c 0a 20 20 20 20  sionId INT,.    
0370: 09 66 6c 61 76 6f 72 49 64 20 49 4e 54 2c 0a 20  .flavorId INT,. 
0380: 20 20 20 09 74 69 6d 65 53 74 61 6d 70 73 20 53     .timeStamps S
0390: 54 52 2c 0a 20 20 20 20 09 69 73 50 72 65 73 65  TR,.    .isPrese
03a0: 6e 74 20 49 4e 54 2c 0a 20 20 20 20 09 70 69 6e  nt INT,.    .pin
03b0: 6e 65 64 20 42 4f 4f 4c 45 41 4e 0a 20 20 20 20  ned BOOLEAN.    
03c0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
03d0: 54 4f 20 22 49 6e 73 74 61 6e 63 65 73 22 0a 20  TO "Instances". 
03e0: 20 20 20 20 20 20 56 41 4c 55 45 53 28 31 2c 20        VALUES(1, 
03f0: 27 6c 69 62 68 65 6c 6c 6f 3a 72 75 6e 74 69 6d  'libhello:runtim
0400: 65 27 2c 20 31 2c 20 31 2c 20 31 31 32 36 39 32  e', 1, 1, 112692
0410: 39 38 38 30 2e 30 39 34 2c 20 31 2c 20 31 29 3b  9880.094, 1, 1);
0420: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0430: 20 22 49 6e 73 74 61 6e 63 65 73 22 0a 20 20 20   "Instances".   
0440: 20 20 20 20 56 41 4c 55 45 53 28 32 2c 20 27 6c      VALUES(2, 'l
0450: 69 62 68 65 6c 6c 6f 3a 75 73 65 72 27 2c 20 31  ibhello:user', 1
0460: 2c 20 31 2c 20 31 31 32 36 39 32 39 38 38 30 2e  , 1, 1126929880.
0470: 30 39 34 2c 20 31 2c 20 30 29 3b 0a 20 20 20 20  094, 1, 0);.    
0480: 49 4e 53 45 52 54 20 49 4e 54 4f 20 22 49 6e 73  INSERT INTO "Ins
0490: 74 61 6e 63 65 73 22 0a 20 20 20 20 20 20 20 56  tances".       V
04a0: 41 4c 55 45 53 28 33 2c 20 27 6c 69 62 68 65 6c  ALUES(3, 'libhel
04b0: 6c 6f 3a 73 63 72 69 70 74 27 2c 20 31 2c 20 31  lo:script', 1, 1
04c0: 2c 20 31 31 32 36 39 32 39 38 38 30 2e 30 39 34  , 1126929880.094
04d0: 2c 20 31 2c 20 30 29 3b 0a 20 20 20 20 49 4e 53  , 1, 0);.    INS
04e0: 45 52 54 20 49 4e 54 4f 20 22 49 6e 73 74 61 6e  ERT INTO "Instan
04f0: 63 65 73 22 0a 20 20 20 20 20 20 20 56 41 4c 55  ces".       VALU
0500: 45 53 28 34 2c 20 27 6c 69 62 68 65 6c 6c 6f 27  ES(4, 'libhello'
0510: 2c 20 31 2c 20 31 2c 20 31 31 32 36 39 32 39 38  , 1, 1, 11269298
0520: 38 30 2e 30 39 34 2c 20 31 2c 20 30 29 3b 0a 20  80.094, 1, 0);. 
0530: 20 20 20 0a 20 20 20 20 43 52 45 41 54 45 20 54     .    CREATE T
0540: 41 42 4c 45 20 56 65 72 73 69 6f 6e 73 28 76 65  ABLE Versions(ve
0550: 72 73 69 6f 6e 49 64 20 49 4e 54 45 47 45 52 20  rsionId INTEGER 
0560: 50 52 49 4d 41 52 59 20 4b 45 59 2c 76 65 72 73  PRIMARY KEY,vers
0570: 69 6f 6e 20 53 54 52 20 55 4e 49 51 55 45 29 3b  ion STR UNIQUE);
0580: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0590: 20 22 56 65 72 73 69 6f 6e 73 22 20 56 41 4c 55   "Versions" VALU
05a0: 45 53 28 30 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20  ES(0, NULL);.   
05b0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 22 56 65   INSERT INTO "Ve
05c0: 72 73 69 6f 6e 73 22 20 56 41 4c 55 45 53 28 31  rsions" VALUES(1
05d0: 2c 20 27 2f 6c 6f 63 61 6c 68 6f 73 74 40 72 70  , '/localhost@rp
05e0: 6c 3a 6c 69 6e 75 78 2f 30 2d 31 2d 31 27 29 3b  l:linux/0-1-1');
05f0: 0a 20 20 20 20 0a 20 20 20 20 43 52 45 41 54 45  .    .    CREATE
0600: 20 54 41 42 4c 45 20 46 6c 61 76 6f 72 73 28 66   TABLE Flavors(f
0610: 6c 61 76 6f 72 49 64 20 69 6e 74 65 67 65 72 20  lavorId integer 
0620: 70 72 69 6d 61 72 79 20 6b 65 79 2c 20 66 6c 61  primary key, fla
0630: 76 6f 72 20 73 74 72 20 75 6e 69 71 75 65 29 3b  vor str unique);
0640: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0650: 20 22 46 6c 61 76 6f 72 73 22 20 56 41 4c 55 45   "Flavors" VALUE
0660: 53 28 30 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20 20  S(0, NULL);.    
0670: 49 4e 53 45 52 54 20 49 4e 54 4f 20 22 46 6c 61  INSERT INTO "Fla
0680: 76 6f 72 73 22 20 56 41 4c 55 45 53 28 31 2c 20  vors" VALUES(1, 
0690: 27 31 23 78 38 36 27 29 3b 0a 20 20 20 20 0a 20  '1#x86');.    . 
06a0: 20 20 20 43 52 45 41 54 45 20 54 45 4d 50 4f 52     CREATE TEMPOR
06b0: 41 52 59 20 54 41 42 4c 45 20 74 6c 4c 69 73 74  ARY TABLE tlList
06c0: 20 28 0a 20 20 20 20 20 20 20 72 6f 77 20 49 4e   (.       row IN
06d0: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
06e0: 59 2c 0a 20 20 20 20 20 20 20 6e 61 6d 65 20 53  Y,.       name S
06f0: 54 52 49 4e 47 2c 0a 20 20 20 20 20 20 20 76 65  TRING,.       ve
0700: 72 73 69 6f 6e 20 53 54 52 49 4e 47 2c 0a 20 20  rsion STRING,.  
0710: 20 20 20 20 20 66 6c 61 76 6f 72 20 53 54 52 49       flavor STRI
0720: 4e 47 0a 20 20 20 20 29 3b 0a 20 20 20 20 0a 20  NG.    );.    . 
0730: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0740: 6c 4c 69 73 74 20 0a 20 20 20 20 20 20 76 61 6c  lList .      val
0750: 75 65 73 28 4e 55 4c 4c 2c 20 27 6c 69 62 68 65  ues(NULL, 'libhe
0760: 6c 6c 6f 3a 73 63 72 69 70 74 27 2c 20 27 2f 6c  llo:script', '/l
0770: 6f 63 61 6c 68 6f 73 74 40 72 70 6c 3a 6c 69 6e  ocalhost@rpl:lin
0780: 75 78 2f 30 2d 31 2d 31 27 2c 20 27 31 23 78 38  ux/0-1-1', '1#x8
0790: 36 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  6');.    INSERT 
07a0: 49 4e 54 4f 20 74 6c 4c 69 73 74 20 0a 20 20 20  INTO tlList .   
07b0: 20 20 20 76 61 6c 75 65 73 28 4e 55 4c 4c 2c 20     values(NULL, 
07c0: 27 6c 69 62 68 65 6c 6c 6f 3a 75 73 65 72 27 2c  'libhello:user',
07d0: 20 27 2f 6c 6f 63 61 6c 68 6f 73 74 40 72 70 6c   '/localhost@rpl
07e0: 3a 6c 69 6e 75 78 2f 30 2d 31 2d 31 27 2c 20 27  :linux/0-1-1', '
07f0: 31 23 78 38 36 27 29 3b 0a 20 20 20 20 49 4e 53  1#x86');.    INS
0800: 45 52 54 20 49 4e 54 4f 20 74 6c 4c 69 73 74 20  ERT INTO tlList 
0810: 0a 20 20 20 20 20 20 76 61 6c 75 65 73 28 4e 55  .      values(NU
0820: 4c 4c 2c 20 27 6c 69 62 68 65 6c 6c 6f 3a 72 75  LL, 'libhello:ru
0830: 6e 74 69 6d 65 27 2c 20 27 2f 6c 6f 63 61 6c 68  ntime', '/localh
0840: 6f 73 74 40 72 70 6c 3a 6c 69 6e 75 78 2f 30 2d  ost@rpl:linux/0-
0850: 31 2d 31 27 2c 20 27 31 23 78 38 36 27 29 3b 0a  1-1', '1#x86');.
0860: 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 52 75 6e 20    }.} {}..# Run 
0870: 74 68 65 20 71 75 65 72 79 20 77 69 74 68 20 61  the query with a
0880: 6e 20 69 6e 64 65 78 0a 23 0a 64 6f 5f 74 65 73  n index.#.do_tes
0890: 74 20 74 6b 74 31 34 33 35 2d 31 2e 31 20 7b 0a  t tkt1435-1.1 {.
08a0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
08b0: 73 65 6c 65 63 74 20 72 6f 77 2c 20 70 69 6e 6e  select row, pinn
08c0: 65 64 20 66 72 6f 6d 20 74 6c 4c 69 73 74 2c 20  ed from tlList, 
08d0: 49 6e 73 74 61 6e 63 65 73 2c 20 56 65 72 73 69  Instances, Versi
08e0: 6f 6e 73 2c 20 46 6c 61 76 6f 72 73 0a 20 20 20  ons, Flavors.   
08f0: 20 20 20 20 20 77 68 65 72 65 0a 20 20 20 20 20       where.     
0900: 20 20 20 20 20 20 20 49 6e 73 74 61 6e 63 65 73         Instances
0910: 2e 74 72 6f 76 65 4e 61 6d 65 20 3d 20 74 6c 4c  .troveName = tlL
0920: 69 73 74 2e 6e 61 6d 65 0a 20 20 20 20 20 20 20  ist.name.       
0930: 20 61 6e 64 20 56 65 72 73 69 6f 6e 73 2e 76 65   and Versions.ve
0940: 72 73 69 6f 6e 20 3d 20 74 6c 4c 69 73 74 2e 76  rsion = tlList.v
0950: 65 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 61  ersion.        a
0960: 6e 64 20 49 6e 73 74 61 6e 63 65 73 2e 76 65 72  nd Instances.ver
0970: 73 69 6f 6e 49 64 20 3d 20 56 65 72 73 69 6f 6e  sionId = Version
0980: 73 2e 76 65 72 73 69 6f 6e 49 64 0a 20 20 20 20  s.versionId.    
0990: 20 20 20 20 61 6e 64 20 28 20 20 20 20 46 6c 61      and (    Fla
09a0: 76 6f 72 73 2e 66 6c 61 76 6f 72 20 3d 20 74 6c  vors.flavor = tl
09b0: 4c 69 73 74 2e 66 6c 61 76 6f 72 20 6f 72 20 46  List.flavor or F
09c0: 6c 61 76 6f 72 73 2e 66 6c 61 76 6f 72 20 69 73  lavors.flavor is
09d0: 20 4e 55 4c 4c 0a 20 20 20 20 20 20 20 20 20 20   NULL.          
09e0: 20 20 20 61 6e 64 20 74 6c 4c 69 73 74 2e 66 6c     and tlList.fl
09f0: 61 76 6f 72 20 3d 20 27 27 29 0a 20 20 20 20 20  avor = '').     
0a00: 20 20 20 61 6e 64 20 49 6e 73 74 61 6e 63 65 73     and Instances
0a10: 2e 66 6c 61 76 6f 72 49 64 20 3d 20 46 6c 61 76  .flavorId = Flav
0a20: 6f 72 73 2e 66 6c 61 76 6f 72 49 64 0a 20 20 20  ors.flavorId.   
0a30: 20 6f 72 64 65 72 20 62 79 20 72 6f 77 20 61 73   order by row as
0a40: 63 3b 0a 20 20 7d 0a 7d 20 7b 31 20 30 20 32 20  c;.  }.} {1 0 2 
0a50: 30 20 33 20 31 7d 0a 0a 23 20 43 72 65 61 74 65  0 3 1}..# Create
0a60: 20 61 20 69 6e 64 69 63 65 73 2c 20 61 6e 61 6c   a indices, anal
0a70: 79 7a 65 20 61 6e 64 20 72 65 72 75 6e 20 74 68  yze and rerun th
0a80: 65 20 71 75 65 72 79 2e 20 0a 23 20 56 65 72 69  e query. .# Veri
0a90: 66 79 20 74 68 61 74 20 74 68 65 20 72 65 73 75  fy that the resu
0aa0: 6c 74 73 20 61 72 65 20 74 68 65 20 73 61 6d 65  lts are the same
0ab0: 0a 23 0a 64 6f 5f 74 65 73 74 20 74 6b 74 31 34  .#.do_test tkt14
0ac0: 33 35 2d 31 2e 32 20 7b 0a 20 20 65 78 65 63 73  35-1.2 {.  execs
0ad0: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
0ae0: 49 4e 44 45 58 20 49 6e 73 74 61 6e 63 65 73 4e  INDEX InstancesN
0af0: 61 6d 65 49 64 78 20 4f 4e 20 49 6e 73 74 61 6e  ameIdx ON Instan
0b00: 63 65 73 28 74 72 6f 76 65 4e 61 6d 65 29 3b 0a  ces(troveName);.
0b10: 20 20 20 20 43 52 45 41 54 45 20 55 4e 49 51 55      CREATE UNIQU
0b20: 45 20 49 4e 44 45 58 20 49 6e 73 74 61 6e 63 65  E INDEX Instance
0b30: 73 49 64 78 20 0a 20 20 20 20 20 20 4f 4e 20 49  sIdx .      ON I
0b40: 6e 73 74 61 6e 63 65 73 28 74 72 6f 76 65 4e 61  nstances(troveNa
0b50: 6d 65 2c 20 76 65 72 73 69 6f 6e 49 64 2c 20 66  me, versionId, f
0b60: 6c 61 76 6f 72 49 64 29 3b 0a 20 20 20 20 41 4e  lavorId);.    AN
0b70: 41 4c 59 5a 45 3b 0a 20 20 20 20 73 65 6c 65 63  ALYZE;.    selec
0b80: 74 20 72 6f 77 2c 20 70 69 6e 6e 65 64 20 66 72  t row, pinned fr
0b90: 6f 6d 20 74 6c 4c 69 73 74 2c 20 49 6e 73 74 61  om tlList, Insta
0ba0: 6e 63 65 73 2c 20 56 65 72 73 69 6f 6e 73 2c 20  nces, Versions, 
0bb0: 46 6c 61 76 6f 72 73 0a 20 20 20 20 20 20 20 20  Flavors.        
0bc0: 77 68 65 72 65 0a 20 20 20 20 20 20 20 20 20 20  where.          
0bd0: 20 20 49 6e 73 74 61 6e 63 65 73 2e 74 72 6f 76    Instances.trov
0be0: 65 4e 61 6d 65 20 3d 20 74 6c 4c 69 73 74 2e 6e  eName = tlList.n
0bf0: 61 6d 65 0a 20 20 20 20 20 20 20 20 61 6e 64 20  ame.        and 
0c00: 56 65 72 73 69 6f 6e 73 2e 76 65 72 73 69 6f 6e  Versions.version
0c10: 20 3d 20 74 6c 4c 69 73 74 2e 76 65 72 73 69 6f   = tlList.versio
0c20: 6e 0a 20 20 20 20 20 20 20 20 61 6e 64 20 49 6e  n.        and In
0c30: 73 74 61 6e 63 65 73 2e 76 65 72 73 69 6f 6e 49  stances.versionI
0c40: 64 20 3d 20 56 65 72 73 69 6f 6e 73 2e 76 65 72  d = Versions.ver
0c50: 73 69 6f 6e 49 64 0a 20 20 20 20 20 20 20 20 61  sionId.        a
0c60: 6e 64 20 28 20 20 20 20 46 6c 61 76 6f 72 73 2e  nd (    Flavors.
0c70: 66 6c 61 76 6f 72 20 3d 20 74 6c 4c 69 73 74 2e  flavor = tlList.
0c80: 66 6c 61 76 6f 72 20 6f 72 20 46 6c 61 76 6f 72  flavor or Flavor
0c90: 73 2e 66 6c 61 76 6f 72 20 69 73 20 4e 55 4c 4c  s.flavor is NULL
0ca0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e  .             an
0cb0: 64 20 74 6c 4c 69 73 74 2e 66 6c 61 76 6f 72 20  d tlList.flavor 
0cc0: 3d 20 27 27 29 0a 20 20 20 20 20 20 20 20 61 6e  = '').        an
0cd0: 64 20 49 6e 73 74 61 6e 63 65 73 2e 66 6c 61 76  d Instances.flav
0ce0: 6f 72 49 64 20 3d 20 46 6c 61 76 6f 72 73 2e 66  orId = Flavors.f
0cf0: 6c 61 76 6f 72 49 64 0a 20 20 20 20 6f 72 64 65  lavorId.    orde
0d00: 72 20 62 79 20 72 6f 77 20 61 73 63 3b 0a 20 20  r by row asc;.  
0d10: 7d 0a 7d 20 7b 31 20 30 20 32 20 30 20 33 20 31  }.} {1 0 2 0 3 1
0d20: 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a     }..finish_test.