/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact cd3af9007cf91ed5a2c1b36243979274bb3b2632:


0000: 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69  .set testdir [fi
0010: 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76  le dirname $argv
0020: 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64  0].source $testd
0030: 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 0a 69  ir/tester.tcl..i
0040: 66 63 61 70 61 62 6c 65 20 21 76 74 61 62 20 7b  fcapable !vtab {
0050: 0a 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a 20  .  finish_test. 
0060: 20 72 65 74 75 72 6e 0a 7d 0a 0a 72 65 67 69 73   return.}..regis
0070: 74 65 72 5f 65 63 68 6f 5f 6d 6f 64 75 6c 65 20  ter_echo_module 
0080: 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 6e 65 63 74  [sqlite3_connect
0090: 69 6f 6e 5f 70 6f 69 6e 74 65 72 20 64 62 5d 0a  ion_pointer db].
00a0: 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33 38 37 31  .do_test tkt3871
00b0: 2d 31 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  -1.1 {.  execsql
00c0: 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20   {.    BEGIN;.  
00d0: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
00e0: 31 28 61 20 50 52 49 4d 41 52 59 20 4b 45 59 2c  1(a PRIMARY KEY,
00f0: 20 62 20 55 4e 49 51 55 45 29 3b 0a 20 20 7d 0a   b UNIQUE);.  }.
0100: 20 20 66 6f 72 20 7b 73 65 74 20 69 20 30 7d 20    for {set i 0} 
0110: 7b 24 69 20 3c 20 35 30 30 7d 20 7b 69 6e 63 72  {$i < 500} {incr
0120: 20 69 7d 20 7b 0a 20 20 20 20 65 78 65 63 73 71   i} {.    execsq
0130: 6c 20 7b 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  l { INSERT INTO 
0140: 74 31 20 56 41 4c 55 45 53 28 24 69 2c 20 24 69  t1 VALUES($i, $i
0150: 2a 24 69 29 20 7d 0a 20 20 7d 0a 20 20 65 78 65  *$i) }.  }.  exe
0160: 63 73 71 6c 20 43 4f 4d 4d 49 54 0a 20 20 65 78  csql COMMIT.  ex
0170: 65 63 73 71 6c 20 7b 20 0a 20 20 20 20 43 52 45  ecsql { .    CRE
0180: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
0190: 45 20 65 20 55 53 49 4e 47 20 65 63 68 6f 28 74  E e USING echo(t
01a0: 31 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 63  1);.    SELECT c
01b0: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 65 3b 0a  ount(*) FROM e;.
01c0: 20 20 7d 0a 7d 20 7b 35 30 30 7d 0a 0a 64 6f 5f    }.} {500}..do_
01d0: 74 65 73 74 20 74 6b 74 33 38 37 31 2d 31 2e 32  test tkt3871-1.2
01e0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 53   {.  execsql { S
01f0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 65 20 57  ELECT * FROM e W
0200: 48 45 52 45 20 61 20 3d 20 31 20 4f 52 20 61 20  HERE a = 1 OR a 
0210: 3d 20 32 20 7d 0a 7d 20 7b 31 20 31 20 32 20 34  = 2 }.} {1 1 2 4
0220: 7d 0a 64 6f 5f 74 65 73 74 20 74 6b 74 33 38 37  }.do_test tkt387
0230: 31 2d 31 2e 33 20 7b 0a 20 20 73 65 74 20 65 63  1-1.3 {.  set ec
0240: 68 6f 5f 6d 6f 64 75 6c 65 20 22 22 0a 20 20 65  ho_module "".  e
0250: 78 65 63 73 71 6c 20 7b 20 53 45 4c 45 43 54 20  xecsql { SELECT 
0260: 2a 20 46 52 4f 4d 20 65 20 57 48 45 52 45 20 61  * FROM e WHERE a
0270: 20 3d 20 31 20 4f 52 20 61 20 3d 20 32 20 7d 0a   = 1 OR a = 2 }.
0280: 20 20 73 65 74 20 65 63 68 6f 5f 6d 6f 64 75 6c    set echo_modul
0290: 65 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 78 46  e.} [list \.  xF
02a0: 69 6c 74 65 72 20 7b 53 45 4c 45 43 54 20 72 6f  ilter {SELECT ro
02b0: 77 69 64 2c 20 2a 20 46 52 4f 4d 20 27 74 31 27  wid, * FROM 't1'
02c0: 20 57 48 45 52 45 20 61 20 3d 20 3f 7d 20 31 20   WHERE a = ?} 1 
02d0: 5c 0a 20 20 78 46 69 6c 74 65 72 20 7b 53 45 4c  \.  xFilter {SEL
02e0: 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f  ECT rowid, * FRO
02f0: 4d 20 27 74 31 27 20 57 48 45 52 45 20 61 20 3d  M 't1' WHERE a =
0300: 20 3f 7d 20 32 20 5c 0a 5d 0a 0a 64 6f 5f 74 65   ?} 2 \.]..do_te
0310: 73 74 20 74 6b 74 33 38 37 31 2d 31 2e 34 20 7b  st tkt3871-1.4 {
0320: 0a 20 20 65 78 65 63 73 71 6c 20 7b 20 53 45 4c  .  execsql { SEL
0330: 45 43 54 20 2a 20 46 52 4f 4d 20 65 20 57 48 45  ECT * FROM e WHE
0340: 52 45 20 61 20 3d 20 31 20 4f 52 20 61 20 3d 20  RE a = 1 OR a = 
0350: 32 20 4f 52 20 62 20 3d 20 39 20 7d 0a 7d 20 7b  2 OR b = 9 }.} {
0360: 31 20 31 20 32 20 34 20 33 20 39 7d 0a 64 6f 5f  1 1 2 4 3 9}.do_
0370: 74 65 73 74 20 74 6b 74 33 38 37 31 2d 31 2e 35  test tkt3871-1.5
0380: 20 7b 0a 20 20 73 65 74 20 65 63 68 6f 5f 6d 6f   {.  set echo_mo
0390: 64 75 6c 65 20 22 22 0a 20 20 65 78 65 63 73 71  dule "".  execsq
03a0: 6c 20 7b 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  l { SELECT * FRO
03b0: 4d 20 65 20 57 48 45 52 45 20 61 20 3d 20 31 20  M e WHERE a = 1 
03c0: 4f 52 20 61 20 3d 20 32 20 4f 52 20 62 20 3d 20  OR a = 2 OR b = 
03d0: 39 20 7d 0a 20 20 73 65 74 20 65 63 68 6f 5f 6d  9 }.  set echo_m
03e0: 6f 64 75 6c 65 0a 7d 20 5b 6c 69 73 74 20 5c 0a  odule.} [list \.
03f0: 20 20 78 46 69 6c 74 65 72 20 7b 53 45 4c 45 43    xFilter {SELEC
0400: 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20  T rowid, * FROM 
0410: 27 74 31 27 20 57 48 45 52 45 20 61 20 3d 20 3f  't1' WHERE a = ?
0420: 7d 20 31 20 5c 0a 20 20 78 46 69 6c 74 65 72 20  } 1 \.  xFilter 
0430: 7b 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a  {SELECT rowid, *
0440: 20 46 52 4f 4d 20 27 74 31 27 20 57 48 45 52 45   FROM 't1' WHERE
0450: 20 61 20 3d 20 3f 7d 20 32 20 5c 0a 20 20 78 46   a = ?} 2 \.  xF
0460: 69 6c 74 65 72 20 7b 53 45 4c 45 43 54 20 72 6f  ilter {SELECT ro
0470: 77 69 64 2c 20 2a 20 46 52 4f 4d 20 27 74 31 27  wid, * FROM 't1'
0480: 20 57 48 45 52 45 20 62 20 3d 20 3f 7d 20 39 0a   WHERE b = ?} 9.
0490: 5d 0a 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a  ]...finish_test.
04a0: 0a                                               .