/ Hex Artifact Content
Login

Artifact e19fa4a538fcd1bb66c22825fa8f71618fb13583:


0000: 23 20 32 30 30 36 20 41 75 67 75 73 74 20 32 39  # 2006 August 29
0010: 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20  .#.# The author 
0020: 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69  disclaims copyri
0030: 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72  ght to this sour
0040: 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61  ce code.  In pla
0050: 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20  ce of.# a legal 
0060: 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20  notice, here is 
0070: 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20  a blessing:.#.# 
0080: 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f     May you do go
0090: 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e  od and not evil.
00a0: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69  .#    May you fi
00b0: 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66  nd forgiveness f
00c0: 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20  or yourself and 
00d0: 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a  forgive others..
00e0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61  #    May you sha
00f0: 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72  re freely, never
0100: 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61   taking more tha
0110: 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a  n 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 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 66 69 6c 65 20 69 6e 73  of this file ins
01c0: 65 72 74 69 6e 67 20 69 6e 74 6f 20 76 69 72 74  erting into virt
01d0: 75 61 6c 20 74 61 62 6c 65 73 20 66 72 6f 6d 20  ual tables from 
01e0: 61 20 53 45 4c 45 43 54 0a 23 20 73 74 61 74 65  a SELECT.# state
01f0: 6d 65 6e 74 2e 0a 23 0a 23 20 24 49 64 3a 20 76  ment..#.# $Id: v
0200: 74 61 62 38 2e 74 65 73 74 2c 76 20 31 2e 32 20  tab8.test,v 1.2 
0210: 32 30 30 37 2f 30 33 2f 30 32 20 30 38 3a 31 32  2007/03/02 08:12
0220: 3a 32 33 20 64 61 6e 69 65 6c 6b 31 39 37 37 20  :23 danielk1977 
0230: 45 78 70 20 24 0a 0a 73 65 74 20 74 65 73 74 64  Exp $..set testd
0240: 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  ir [file dirname
0250: 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20   $argv0].source 
0260: 24 74 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e  $testdir/tester.
0270: 74 63 6c 0a 0a 69 66 63 61 70 61 62 6c 65 20 21  tcl..ifcapable !
0280: 76 74 61 62 20 7b 0a 20 20 66 69 6e 69 73 68 5f  vtab {.  finish_
0290: 74 65 73 74 0a 20 20 72 65 74 75 72 6e 0a 7d 0a  test.  return.}.
02a0: 0a 72 65 67 69 73 74 65 72 5f 65 63 68 6f 5f 6d  .register_echo_m
02b0: 6f 64 75 6c 65 20 5b 73 71 6c 69 74 65 33 5f 63  odule [sqlite3_c
02c0: 6f 6e 6e 65 63 74 69 6f 6e 5f 70 6f 69 6e 74 65  onnection_pointe
02d0: 72 20 64 62 5d 0a 0a 23 20 53 65 65 20 74 69 63  r db]..# See tic
02e0: 6b 65 74 20 23 32 32 34 34 0a 23 0a 64 6f 5f 74  ket #2244.#.do_t
02f0: 65 73 74 20 76 74 61 62 31 2e 32 32 34 34 2d 31  est vtab1.2244-1
0300: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0310: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
0320: 74 32 32 34 34 28 61 2c 20 62 29 3b 0a 20 20 20  t2244(a, b);.   
0330: 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
0340: 54 41 42 4c 45 20 74 32 32 34 34 65 20 55 53 49  TABLE t2244e USI
0350: 4e 47 20 65 63 68 6f 28 74 32 32 34 34 29 3b 0a  NG echo(t2244);.
0360: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0370: 74 32 32 34 34 20 56 41 4c 55 45 53 28 27 41 41  t2244 VALUES('AA
0380: 27 2c 20 27 42 42 27 29 3b 0a 20 20 20 20 49 4e  ', 'BB');.    IN
0390: 53 45 52 54 20 49 4e 54 4f 20 74 32 32 34 34 20  SERT INTO t2244 
03a0: 56 41 4c 55 45 53 28 27 43 43 27 2c 20 27 44 44  VALUES('CC', 'DD
03b0: 27 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 72  ');.    SELECT r
03c0: 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 32 32  owid, * FROM t22
03d0: 34 34 65 3b 0a 20 20 7d 0a 7d 20 7b 31 20 41 41  44e;.  }.} {1 AA
03e0: 20 42 42 20 32 20 43 43 20 44 44 7d 0a 64 6f 5f   BB 2 CC DD}.do_
03f0: 74 65 73 74 20 76 74 61 62 31 2e 32 32 34 34 2d  test vtab1.2244-
0400: 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  2 {.  execsql {.
0410: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
0420: 4d 20 74 32 32 34 34 65 20 57 48 45 52 45 20 72  M t2244e WHERE r
0430: 6f 77 69 64 20 3d 20 31 30 3b 0a 20 20 7d 0a 7d  owid = 10;.  }.}
0440: 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 76 74 61 62   {}.do_test vtab
0450: 31 2e 32 32 34 34 2d 33 20 7b 0a 20 20 65 78 65  1.2244-3 {.  exe
0460: 63 73 71 6c 20 7b 0a 20 20 20 20 55 50 44 41 54  csql {.    UPDAT
0470: 45 20 74 32 32 34 34 65 20 53 45 54 20 61 20 3d  E t2244e SET a =
0480: 20 27 68 65 6c 6c 6f 20 77 6f 72 6c 64 27 20 57   'hello world' W
0490: 48 45 52 45 20 30 3b 0a 20 20 20 20 53 45 4c 45  HERE 0;.    SELE
04a0: 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d  CT rowid, * FROM
04b0: 20 74 32 32 34 34 65 3b 0a 20 20 7d 0a 7d 20 7b   t2244e;.  }.} {
04c0: 31 20 41 41 20 42 42 20 32 20 43 43 20 44 44 7d  1 AA BB 2 CC DD}
04d0: 0a 0a 64 6f 5f 74 65 73 74 20 76 74 61 62 31 2d  ..do_test vtab1-
04e0: 32 32 35 30 2d 32 20 7b 0a 20 20 65 78 65 63 73  2250-2 {.  execs
04f0: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
0500: 54 41 42 4c 45 20 74 32 32 35 30 28 61 2c 20 62  TABLE t2250(a, b
0510: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
0520: 54 4f 20 74 32 32 35 30 20 56 41 4c 55 45 53 28  TO t2250 VALUES(
0530: 31 30 2c 20 32 30 29 3b 0a 20 20 20 20 43 52 45  10, 20);.    CRE
0540: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
0550: 45 20 74 32 32 35 30 65 20 55 53 49 4e 47 20 65  E t2250e USING e
0560: 63 68 6f 28 74 32 32 35 30 29 3b 0a 20 20 20 20  cho(t2250);.    
0570: 73 65 6c 65 63 74 20 6d 61 78 28 72 6f 77 69 64  select max(rowid
0580: 29 20 66 72 6f 6d 20 74 32 32 35 30 3b 0a 20 20  ) from t2250;.  
0590: 20 20 73 65 6c 65 63 74 20 6d 61 78 28 72 6f 77    select max(row
05a0: 69 64 29 20 66 72 6f 6d 20 74 32 32 35 30 65 3b  id) from t2250e;
05b0: 0a 20 20 7d 0a 7d 20 7b 31 20 31 7d 0a 0a 23 20  .  }.} {1 1}..# 
05c0: 53 65 65 20 74 69 63 6b 65 74 20 23 32 32 36 30  See ticket #2260
05d0: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 76 74 61 62  ..#.do_test vtab
05e0: 31 2e 32 32 36 30 2d 31 20 7b 0a 20 20 65 78 65  1.2260-1 {.  exe
05f0: 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54  csql {.    CREAT
0600: 45 20 54 41 42 4c 45 20 74 32 32 36 30 61 5f 72  E TABLE t2260a_r
0610: 65 61 6c 28 61 2c 20 62 29 3b 0a 20 20 20 20 43  eal(a, b);.    C
0620: 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 32 36  REATE TABLE t226
0630: 30 62 5f 72 65 61 6c 28 61 2c 20 62 29 3b 0a 0a  0b_real(a, b);..
0640: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
0650: 20 69 32 32 36 30 20 4f 4e 20 74 32 32 36 30 61   i2260 ON t2260a
0660: 5f 72 65 61 6c 28 61 29 3b 0a 20 20 20 20 43 52  _real(a);.    CR
0670: 45 41 54 45 20 49 4e 44 45 58 20 69 32 32 36 30  EATE INDEX i2260
0680: 78 20 4f 4e 20 74 32 32 36 30 62 5f 72 65 61 6c  x ON t2260b_real
0690: 28 61 29 3b 0a 0a 20 20 20 20 43 52 45 41 54 45  (a);..    CREATE
06a0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74   VIRTUAL TABLE t
06b0: 32 32 36 30 61 20 55 53 49 4e 47 20 65 63 68 6f  2260a USING echo
06c0: 28 74 32 32 36 30 61 5f 72 65 61 6c 29 3b 0a 20  (t2260a_real);. 
06d0: 20 20 20 43 52 45 41 54 45 20 56 49 52 54 55 41     CREATE VIRTUA
06e0: 4c 20 54 41 42 4c 45 20 74 32 32 36 30 62 20 55  L TABLE t2260b U
06f0: 53 49 4e 47 20 65 63 68 6f 28 74 32 32 36 30 62  SING echo(t2260b
0700: 5f 72 65 61 6c 29 3b 0a 0a 20 20 20 20 53 45 4c  _real);..    SEL
0710: 45 43 54 20 2a 20 46 52 4f 4d 20 74 32 32 36 30  ECT * FROM t2260
0720: 61 2c 20 74 32 32 36 30 62 20 57 48 45 52 45 20  a, t2260b WHERE 
0730: 74 32 32 36 30 61 2e 61 20 3d 20 74 32 32 36 30  t2260a.a = t2260
0740: 62 2e 61 20 41 4e 44 20 74 32 32 36 30 61 2e 61  b.a AND t2260a.a
0750: 20 3e 20 31 30 31 3b 0a 20 20 7d 0a 7d 20 7b 7d   > 101;.  }.} {}
0760: 0a 0a 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c  ..unset -nocompl
0770: 61 69 6e 20 65 63 68 6f 5f 6d 6f 64 75 6c 65 5f  ain echo_module_
0780: 62 65 67 69 6e 5f 66 61 69 6c 0a 66 69 6e 69 73  begin_fail.finis
0790: 68 5f 74 65 73 74 0a                             h_test.