SQLite4
Hex Artifact Content
Not logged in

Artifact da293db40f61778c9cab425529868c6e16409d17:


0000: 23 20 32 30 30 38 20 4f 63 74 6f 62 65 72 20 31  # 2008 October 1
0010: 33 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72  3.#.# The author
0020: 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72   disclaims copyr
0030: 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75  ight to this sou
0040: 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c  rce code.  In pl
0050: 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c  ace of.# a legal
0060: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
0070: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23   a blessing:.#.#
0080: 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67      May you do g
0090: 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c  ood and not evil
00a0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66  ..#    May you f
00b0: 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20  ind forgiveness 
00c0: 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64  for yourself and
00d0: 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e   forgive others.
00e0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68  .#    May you sh
00f0: 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65  are freely, neve
0100: 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68  r taking more th
0110: 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23  an you 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 2a 2a 2a 0a 23 20 54 68 69 73 20 66  *******.# This f
0170: 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72  ile implements r
0180: 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20  egression tests 
0190: 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61  for SQLite libra
01a0: 72 79 2e 20 53 70 65 63 69 66 69 63 61 6c 6c 79  ry. Specifically
01b0: 2c 0a 23 20 69 74 20 74 65 73 74 73 20 74 68 61  ,.# it tests tha
01c0: 74 20 61 66 66 69 6e 69 74 69 65 73 20 61 6e 64  t affinities and
01d0: 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
01e0: 6e 63 65 73 20 61 72 65 20 63 6f 72 72 65 63 74  nces are correct
01f0: 6c 79 20 61 70 70 6c 69 65 64 0a 23 20 69 6e 20  ly applied.# in 
0200: 61 67 67 72 65 67 61 74 65 20 71 75 65 72 69 65  aggregate querie
0210: 73 2e 0a 23 0a 23 20 24 49 64 3a 20 74 6b 74 33  s..#.# $Id: tkt3
0220: 34 39 33 2e 74 65 73 74 2c 76 20 31 2e 32 20 32  493.test,v 1.2 2
0230: 30 30 39 2f 30 36 2f 30 35 20 31 37 3a 30 39 3a  009/06/05 17:09:
0240: 31 32 20 64 72 68 20 45 78 70 20 24 0a 0a 73 65  12 drh Exp $..se
0250: 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20  t testdir [file 
0260: 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a  dirname $argv0].
0270: 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f  source $testdir/
0280: 74 65 73 74 65 72 2e 74 63 6c 0a 0a 64 6f 5f 74  tester.tcl..do_t
0290: 65 73 74 20 74 6b 74 33 34 39 33 2d 31 2e 31 20  est tkt3493-1.1 
02a0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
02b0: 20 20 42 45 47 49 4e 3b 0a 20 20 20 20 43 52 45    BEGIN;.    CRE
02c0: 41 54 45 20 54 41 42 4c 45 20 41 20 28 69 64 20  ATE TABLE A (id 
02d0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
02e0: 4b 45 59 20 2f 2a 41 55 54 4f 49 4e 43 52 45 4d  KEY /*AUTOINCREM
02f0: 45 4e 54 2a 2f 2c 20 76 61 6c 20 54 45 58 54 29  ENT*/, val TEXT)
0300: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
0310: 4f 20 41 20 56 41 4c 55 45 53 28 31 2c 27 31 32  O A VALUES(1,'12
0320: 33 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  3');.    INSERT 
0330: 49 4e 54 4f 20 41 20 56 41 4c 55 45 53 28 32 2c  INTO A VALUES(2,
0340: 27 34 35 36 27 29 3b 0a 20 20 20 20 43 52 45 41  '456');.    CREA
0350: 54 45 20 54 41 42 4c 45 20 42 20 28 69 64 20 49  TE TABLE B (id I
0360: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
0370: 45 59 20 2f 2a 41 55 54 4f 49 4e 43 52 45 4d 45  EY /*AUTOINCREME
0380: 4e 54 2a 2f 2c 20 76 61 6c 20 54 45 58 54 29 3b  NT*/, val TEXT);
0390: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
03a0: 20 42 20 56 41 4c 55 45 53 28 31 2c 31 29 3b 0a   B VALUES(1,1);.
03b0: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
03c0: 42 20 56 41 4c 55 45 53 28 32 2c 32 29 3b 0a 20  B VALUES(2,2);. 
03d0: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
03e0: 41 5f 42 20 28 42 5f 69 64 20 49 4e 54 45 47 45  A_B (B_id INTEGE
03f0: 52 20 4e 4f 54 20 4e 55 4c 4c 2c 20 41 5f 69 64  R NOT NULL, A_id
0400: 20 49 4e 54 45 47 45 52 29 3b 0a 20 20 20 20 49   INTEGER);.    I
0410: 4e 53 45 52 54 20 49 4e 54 4f 20 41 5f 42 20 56  NSERT INTO A_B V
0420: 41 4c 55 45 53 28 31 2c 31 29 3b 0a 20 20 20 20  ALUES(1,1);.    
0430: 49 4e 53 45 52 54 20 49 4e 54 4f 20 41 5f 42 20  INSERT INTO A_B 
0440: 56 41 4c 55 45 53 28 32 2c 32 29 3b 0a 20 20 20  VALUES(2,2);.   
0450: 20 43 4f 4d 4d 49 54 3b 0a 20 20 7d 0a 7d 20 7b   COMMIT;.  }.} {
0460: 7d 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39  }.do_test tkt349
0470: 33 2d 31 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  3-1.2 {.  execsq
0480: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 0a  l {.    SELECT .
0490: 20 20 20 20 20 20 43 41 53 45 20 0a 20 20 20 20        CASE .    
04a0: 20 20 20 20 20 57 48 45 4e 20 42 2e 76 61 6c 20       WHEN B.val 
04b0: 3d 20 31 20 54 48 45 4e 20 27 58 59 5a 27 20 0a  = 1 THEN 'XYZ' .
04c0: 20 20 20 20 20 20 20 20 20 45 4c 53 45 20 41 2e           ELSE A.
04d0: 76 61 6c 20 0a 20 20 20 20 20 20 45 4e 44 20 41  val .      END A
04e0: 53 20 43 6f 6c 31 0a 20 20 20 20 46 52 4f 4d 20  S Col1.    FROM 
04f0: 42 20 20 0a 20 20 20 20 4c 45 46 54 20 4f 55 54  B  .    LEFT OUT
0500: 45 52 20 4a 4f 49 4e 20 41 5f 42 20 4f 4e 20 42  ER JOIN A_B ON B
0510: 2e 69 64 20 3d 20 41 5f 42 2e 42 5f 69 64 20 20  .id = A_B.B_id  
0520: 0a 20 20 20 20 4c 45 46 54 20 4f 55 54 45 52 20  .    LEFT OUTER 
0530: 4a 4f 49 4e 20 41 20 4f 4e 20 41 2e 69 64 20 3d  JOIN A ON A.id =
0540: 20 41 5f 42 2e 41 5f 69 64 0a 20 20 20 20 4f 52   A_B.A_id.    OR
0550: 44 45 52 20 42 59 20 43 6f 6c 31 20 41 53 43 3b  DER BY Col1 ASC;
0560: 0a 20 20 7d 0a 7d 20 7b 34 35 36 20 58 59 5a 7d  .  }.} {456 XYZ}
0570: 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39 33  .do_test tkt3493
0580: 2d 31 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  -1.3 {.  execsql
0590: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 44 49   {.    SELECT DI
05a0: 53 54 49 4e 43 54 0a 20 20 20 20 20 20 43 41 53  STINCT.      CAS
05b0: 45 20 0a 20 20 20 20 20 20 20 20 20 57 48 45 4e  E .         WHEN
05c0: 20 42 2e 76 61 6c 20 3d 20 31 20 54 48 45 4e 20   B.val = 1 THEN 
05d0: 27 58 59 5a 27 20 0a 20 20 20 20 20 20 20 20 20  'XYZ' .         
05e0: 45 4c 53 45 20 41 2e 76 61 6c 20 0a 20 20 20 20  ELSE A.val .    
05f0: 20 20 45 4e 44 20 41 53 20 43 6f 6c 31 0a 20 20    END AS Col1.  
0600: 20 20 46 52 4f 4d 20 42 20 20 0a 20 20 20 20 4c    FROM B  .    L
0610: 45 46 54 20 4f 55 54 45 52 20 4a 4f 49 4e 20 41  EFT OUTER JOIN A
0620: 5f 42 20 4f 4e 20 42 2e 69 64 20 3d 20 41 5f 42  _B ON B.id = A_B
0630: 2e 42 5f 69 64 20 20 0a 20 20 20 20 4c 45 46 54  .B_id  .    LEFT
0640: 20 4f 55 54 45 52 20 4a 4f 49 4e 20 41 20 4f 4e   OUTER JOIN A ON
0650: 20 41 2e 69 64 20 3d 20 41 5f 42 2e 41 5f 69 64   A.id = A_B.A_id
0660: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 43 6f  .    ORDER BY Co
0670: 6c 31 20 41 53 43 3b 0a 20 20 7d 0a 7d 20 7b 34  l1 ASC;.  }.} {4
0680: 35 36 20 58 59 5a 7d 0a 64 6f 5f 74 65 73 74 20  56 XYZ}.do_test 
0690: 74 6b 74 33 34 39 33 2d 31 2e 34 20 7b 0a 20 20  tkt3493-1.4 {.  
06a0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
06b0: 4c 45 43 54 20 62 2e 76 61 6c 2c 20 43 41 53 45  LECT b.val, CASE
06c0: 20 57 48 45 4e 20 62 2e 76 61 6c 20 3d 20 31 20   WHEN b.val = 1 
06d0: 54 48 45 4e 20 27 78 79 7a 27 20 45 4c 53 45 20  THEN 'xyz' ELSE 
06e0: 62 2e 76 61 6c 20 45 4e 44 20 41 53 20 63 6f 6c  b.val END AS col
06f0: 31 20 46 52 4f 4d 20 62 3b 0a 20 20 7d 0a 7d 20  1 FROM b;.  }.} 
0700: 7b 31 20 78 79 7a 20 32 20 32 7d 0a 64 6f 5f 74  {1 xyz 2 2}.do_t
0710: 65 73 74 20 74 6b 74 33 34 39 33 2d 31 2e 35 20  est tkt3493-1.5 
0720: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0730: 20 20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43    SELECT DISTINC
0740: 54 20 0a 20 20 20 20 20 20 62 2e 76 61 6c 2c 20  T .      b.val, 
0750: 0a 20 20 20 20 20 20 43 41 53 45 20 57 48 45 4e  .      CASE WHEN
0760: 20 62 2e 76 61 6c 20 3d 20 31 20 54 48 45 4e 20   b.val = 1 THEN 
0770: 27 78 79 7a 27 20 45 4c 53 45 20 62 2e 76 61 6c  'xyz' ELSE b.val
0780: 20 45 4e 44 20 41 53 20 63 6f 6c 31 20 0a 20 20   END AS col1 .  
0790: 20 20 46 52 4f 4d 20 62 3b 0a 20 20 7d 0a 7d 20    FROM b;.  }.} 
07a0: 7b 31 20 78 79 7a 20 32 20 32 7d 0a 64 6f 5f 74  {1 xyz 2 2}.do_t
07b0: 65 73 74 20 74 6b 74 33 34 39 33 2d 31 2e 36 20  est tkt3493-1.6 
07c0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
07d0: 20 20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43    SELECT DISTINC
07e0: 54 20 0a 20 20 20 20 20 20 62 2e 76 61 6c 2c 20  T .      b.val, 
07f0: 0a 20 20 20 20 20 20 43 41 53 45 20 57 48 45 4e  .      CASE WHEN
0800: 20 62 2e 76 61 6c 20 3d 20 27 31 27 20 54 48 45   b.val = '1' THE
0810: 4e 20 27 78 79 7a 27 20 45 4c 53 45 20 62 2e 76  N 'xyz' ELSE b.v
0820: 61 6c 20 45 4e 44 20 41 53 20 63 6f 6c 31 20 0a  al END AS col1 .
0830: 20 20 20 20 46 52 4f 4d 20 62 3b 0a 20 20 7d 0a      FROM b;.  }.
0840: 7d 20 7b 31 20 78 79 7a 20 32 20 32 7d 0a 0a 0a  } {1 xyz 2 2}...
0850: 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39 33 2d  do_test tkt3493-
0860: 32 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  2.1 {.  execsql 
0870: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
0880: 4c 45 20 74 31 28 61 20 54 45 58 54 2c 20 62 20  LE t1(a TEXT, b 
0890: 49 4e 54 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  INT);.    INSERT
08a0: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
08b0: 31 32 33 2c 20 34 35 36 29 3b 0a 20 20 7d 0a 7d  123, 456);.  }.}
08c0: 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33   {}.do_test tkt3
08d0: 34 39 33 2d 32 2e 32 2e 31 20 7b 0a 20 20 65 78  493-2.2.1 {.  ex
08e0: 65 63 73 71 6c 20 7b 20 53 45 4c 45 43 54 20 61  ecsql { SELECT a
08f0: 3d 31 32 33 20 46 52 4f 4d 20 74 31 20 47 52 4f  =123 FROM t1 GRO
0900: 55 50 20 42 59 20 61 20 7d 0a 7d 20 7b 31 7d 0a  UP BY a }.} {1}.
0910: 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39 33 2d  do_test tkt3493-
0920: 32 2e 32 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  2.2.2 {.  execsq
0930: 6c 20 7b 20 53 45 4c 45 43 54 20 61 3d 31 32 33  l { SELECT a=123
0940: 20 46 52 4f 4d 20 74 31 20 7d 0a 7d 20 7b 31 7d   FROM t1 }.} {1}
0950: 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39 33  .do_test tkt3493
0960: 2d 32 2e 32 2e 33 20 7b 0a 20 20 65 78 65 63 73  -2.2.3 {.  execs
0970: 71 6c 20 7b 20 53 45 4c 45 43 54 20 61 3d 27 31  ql { SELECT a='1
0980: 32 33 27 20 46 52 4f 4d 20 74 31 20 7d 0a 7d 20  23' FROM t1 }.} 
0990: 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33  {1}.do_test tkt3
09a0: 34 39 33 2d 32 2e 32 2e 34 20 7b 0a 20 20 65 78  493-2.2.4 {.  ex
09b0: 65 63 73 71 6c 20 7b 20 53 45 4c 45 43 54 20 63  ecsql { SELECT c
09c0: 6f 75 6e 74 28 2a 29 2c 20 61 3d 31 32 33 20 46  ount(*), a=123 F
09d0: 52 4f 4d 20 74 31 20 7d 0a 7d 20 7b 31 20 31 7d  ROM t1 }.} {1 1}
09e0: 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39 33  .do_test tkt3493
09f0: 2d 32 2e 32 2e 35 20 7b 0a 20 20 65 78 65 63 73  -2.2.5 {.  execs
0a00: 71 6c 20 7b 20 53 45 4c 45 43 54 20 63 6f 75 6e  ql { SELECT coun
0a10: 74 28 2a 29 2c 20 2b 61 3d 31 32 33 20 46 52 4f  t(*), +a=123 FRO
0a20: 4d 20 74 31 20 7d 0a 7d 20 7b 31 20 30 7d 0a 64  M t1 }.} {1 0}.d
0a30: 6f 5f 74 65 73 74 20 74 6b 74 33 34 39 33 2d 32  o_test tkt3493-2
0a40: 2e 33 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  .3.3 {.  execsql
0a50: 20 7b 20 53 45 4c 45 43 54 20 62 3d 27 34 35 36   { SELECT b='456
0a60: 27 20 46 52 4f 4d 20 74 31 20 47 52 4f 55 50 20  ' FROM t1 GROUP 
0a70: 42 59 20 61 20 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f  BY a }.} {1}.do_
0a80: 74 65 73 74 20 74 6b 74 33 34 39 33 2d 32 2e 33  test tkt3493-2.3
0a90: 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .1 {.  execsql {
0aa0: 20 53 45 4c 45 43 54 20 62 3d 27 34 35 36 27 20   SELECT b='456' 
0ab0: 46 52 4f 4d 20 74 31 20 47 52 4f 55 50 20 42 59  FROM t1 GROUP BY
0ac0: 20 62 20 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65   b }.} {1}.do_te
0ad0: 73 74 20 74 6b 74 33 34 39 33 2d 32 2e 33 2e 32  st tkt3493-2.3.2
0ae0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 53   {.  execsql { S
0af0: 45 4c 45 43 54 20 62 3d 27 34 35 36 27 20 46 52  ELECT b='456' FR
0b00: 4f 4d 20 74 31 20 7d 0a 7d 20 7b 31 7d 0a 64 6f  OM t1 }.} {1}.do
0b10: 5f 74 65 73 74 20 74 6b 74 33 34 39 33 2d 32 2e  _test tkt3493-2.
0b20: 34 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  4.1 {.  execsql 
0b30: 7b 20 53 45 4c 45 43 54 20 74 79 70 65 6f 66 28  { SELECT typeof(
0b40: 61 29 2c 20 61 20 46 52 4f 4d 20 74 31 20 47 52  a), a FROM t1 GR
0b50: 4f 55 50 20 42 59 20 61 20 48 41 56 49 4e 47 20  OUP BY a HAVING 
0b60: 61 3d 31 32 33 20 7d 0a 7d 20 7b 74 65 78 74 20  a=123 }.} {text 
0b70: 31 32 33 7d 0a 64 6f 5f 74 65 73 74 20 74 6b 74  123}.do_test tkt
0b80: 33 34 39 33 2d 32 2e 34 2e 32 20 7b 0a 20 20 65  3493-2.4.2 {.  e
0b90: 78 65 63 73 71 6c 20 7b 20 53 45 4c 45 43 54 20  xecsql { SELECT 
0ba0: 74 79 70 65 6f 66 28 61 29 2c 20 61 20 46 52 4f  typeof(a), a FRO
0bb0: 4d 20 74 31 20 47 52 4f 55 50 20 42 59 20 62 20  M t1 GROUP BY b 
0bc0: 48 41 56 49 4e 47 20 61 3d 31 32 33 20 7d 0a 7d  HAVING a=123 }.}
0bd0: 20 7b 74 65 78 74 20 31 32 33 7d 0a 64 6f 5f 74   {text 123}.do_t
0be0: 65 73 74 20 74 6b 74 33 34 39 33 2d 32 2e 35 2e  est tkt3493-2.5.
0bf0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 20  1 {.  execsql { 
0c00: 53 45 4c 45 43 54 20 74 79 70 65 6f 66 28 62 29  SELECT typeof(b)
0c10: 2c 20 62 20 46 52 4f 4d 20 74 31 20 47 52 4f 55  , b FROM t1 GROU
0c20: 50 20 42 59 20 61 20 48 41 56 49 4e 47 20 62 3d  P BY a HAVING b=
0c30: 27 34 35 36 27 20 7d 0a 7d 20 7b 69 6e 74 65 67  '456' }.} {integ
0c40: 65 72 20 34 35 36 7d 0a 64 6f 5f 74 65 73 74 20  er 456}.do_test 
0c50: 74 6b 74 33 34 39 33 2d 32 2e 35 2e 32 20 7b 0a  tkt3493-2.5.2 {.
0c60: 20 20 65 78 65 63 73 71 6c 20 7b 20 53 45 4c 45    execsql { SELE
0c70: 43 54 20 74 79 70 65 6f 66 28 62 29 2c 20 62 20  CT typeof(b), b 
0c80: 46 52 4f 4d 20 74 31 20 47 52 4f 55 50 20 42 59  FROM t1 GROUP BY
0c90: 20 62 20 48 41 56 49 4e 47 20 62 3d 27 34 35 36   b HAVING b='456
0ca0: 27 20 7d 0a 7d 20 7b 69 6e 74 65 67 65 72 20 34  ' }.} {integer 4
0cb0: 35 36 7d 0a 0a 64 6f 5f 74 65 73 74 20 74 6b 74  56}..do_test tkt
0cc0: 33 34 39 33 2d 33 2e 31 20 7b 0a 20 20 65 78 65  3493-3.1 {.  exe
0cd0: 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54  csql {.    CREAT
0ce0: 45 20 54 41 42 4c 45 20 74 32 28 61 20 43 4f 4c  E TABLE t2(a COL
0cf0: 4c 41 54 45 20 4e 4f 43 41 53 45 2c 20 62 20 43  LATE NOCASE, b C
0d00: 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59 29 3b 0a  OLLATE BINARY);.
0d10: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0d20: 74 32 20 56 41 4c 55 45 53 28 27 61 42 63 27 2c  t2 VALUES('aBc',
0d30: 20 27 44 65 46 27 29 3b 0a 20 20 7d 0a 7d 20 7b   'DeF');.  }.} {
0d40: 7d 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39  }.do_test tkt349
0d50: 33 2d 33 2e 32 2e 31 20 7b 0a 20 20 65 78 65 63  3-3.2.1 {.  exec
0d60: 73 71 6c 20 7b 20 53 45 4c 45 43 54 20 61 3d 27  sql { SELECT a='
0d70: 61 62 63 27 20 46 52 4f 4d 20 74 32 20 47 52 4f  abc' FROM t2 GRO
0d80: 55 50 20 42 59 20 61 20 7d 0a 7d 20 7b 31 7d 0a  UP BY a }.} {1}.
0d90: 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39 33 2d  do_test tkt3493-
0da0: 33 2e 32 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  3.2.2 {.  execsq
0db0: 6c 20 7b 20 53 45 4c 45 43 54 20 61 3d 27 61 62  l { SELECT a='ab
0dc0: 63 27 20 46 52 4f 4d 20 74 32 20 7d 0a 7d 20 7b  c' FROM t2 }.} {
0dd0: 31 7d 0a 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33  1}..do_test tkt3
0de0: 34 39 33 2d 33 2e 33 2e 31 20 7b 0a 20 20 65 78  493-3.3.1 {.  ex
0df0: 65 63 73 71 6c 20 7b 20 53 45 4c 45 43 54 20 61  ecsql { SELECT a
0e00: 3e 62 20 46 52 4f 4d 20 74 32 20 47 52 4f 55 50  >b FROM t2 GROUP
0e10: 20 42 59 20 61 2c 20 62 7d 0a 7d 20 7b 30 7d 0a   BY a, b}.} {0}.
0e20: 64 6f 5f 74 65 73 74 20 74 6b 74 33 34 39 33 2d  do_test tkt3493-
0e30: 33 2e 33 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  3.3.2 {.  execsq
0e40: 6c 20 7b 20 53 45 4c 45 43 54 20 61 3e 62 20 43  l { SELECT a>b C
0e50: 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59 20 46 52  OLLATE BINARY FR
0e60: 4f 4d 20 74 32 20 47 52 4f 55 50 20 42 59 20 61  OM t2 GROUP BY a
0e70: 2c 20 62 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65  , b}.} {1}.do_te
0e80: 73 74 20 74 6b 74 33 34 39 33 2d 33 2e 33 2e 33  st tkt3493-3.3.3
0e90: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 53   {.  execsql { S
0ea0: 45 4c 45 43 54 20 62 3e 61 20 46 52 4f 4d 20 74  ELECT b>a FROM t
0eb0: 32 20 47 52 4f 55 50 20 42 59 20 61 2c 20 62 7d  2 GROUP BY a, b}
0ec0: 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 74  .} {0}.do_test t
0ed0: 6b 74 33 34 39 33 2d 33 2e 33 2e 34 20 7b 0a 20  kt3493-3.3.4 {. 
0ee0: 20 65 78 65 63 73 71 6c 20 7b 20 53 45 4c 45 43   execsql { SELEC
0ef0: 54 20 62 3e 61 20 43 4f 4c 4c 41 54 45 20 4e 4f  T b>a COLLATE NO
0f00: 43 41 53 45 20 46 52 4f 4d 20 74 32 20 47 52 4f  CASE FROM t2 GRO
0f10: 55 50 20 42 59 20 61 2c 20 62 7d 0a 7d 20 7b 31  UP BY a, b}.} {1
0f20: 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a     }..finish_test.