/ Hex Artifact Content
Login

Artifact 6e1445b3207d574cff22fc41a8e549dfcf2466ee90546ada97d22a90fa89eb58:


0000: 23 20 32 30 31 36 2d 30 36 2d 30 32 0a 23 0a 23  # 2016-06-02.#.#
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 0a 23 20 0a 23 20 54 65 73 74 20 63 61 73  **.# .# Test cas
0170: 65 73 20 66 6f 72 20 43 53 56 20 76 69 72 74 75  es for CSV virtu
0180: 61 6c 20 74 61 62 6c 65 2e 0a 0a 73 65 74 20 74  al table...set t
0190: 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72  estdir [file dir
01a0: 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75  name $argv0].sou
01b0: 72 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73  rce $testdir/tes
01c0: 74 65 72 2e 74 63 6c 0a 73 65 74 20 74 65 73 74  ter.tcl.set test
01d0: 70 72 65 66 69 78 20 63 73 76 30 31 0a 0a 69 66  prefix csv01..if
01e0: 63 61 70 61 62 6c 65 20 21 76 74 61 62 7c 7c 21  capable !vtab||!
01f0: 63 74 65 20 7b 20 66 69 6e 69 73 68 5f 74 65 73  cte { finish_tes
0200: 74 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 6c 6f  t ; return }..lo
0210: 61 64 5f 73 74 61 74 69 63 5f 65 78 74 65 6e 73  ad_static_extens
0220: 69 6f 6e 20 64 62 20 63 73 76 0a 0a 64 6f 5f 65  ion db csv..do_e
0230: 78 65 63 73 71 6c 5f 74 65 73 74 20 31 2e 30 20  xecsql_test 1.0 
0240: 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55  {.  CREATE VIRTU
0250: 41 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e 74 31  AL TABLE temp.t1
0260: 20 55 53 49 4e 47 20 63 73 76 28 0a 20 20 20 20   USING csv(.    
0270: 64 61 74 61 3d 0a 27 31 2c 32 2c 33 2c 34 0a 35  data=.'1,2,3,4.5
0280: 2c 36 2c 37 2c 38 0a 39 2c 31 30 2c 31 31 2c 31  ,6,7,8.9,10,11,1
0290: 32 0a 31 33 2c 31 34 2c 31 35 2c 31 36 0a 27 2c  2.13,14,15,16.',
02a0: 0a 20 20 20 20 63 6f 6c 75 6d 6e 73 3d 34 0a 20  .    columns=4. 
02b0: 20 29 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46   );.  SELECT * F
02c0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 63 31 3d  ROM t1 WHERE c1=
02d0: 31 30 3b 0a 7d 20 7b 39 20 31 30 20 31 31 20 31  10;.} {9 10 11 1
02e0: 32 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  2}.do_execsql_te
02f0: 73 74 20 31 2e 31 20 7b 0a 20 20 53 45 4c 45 43  st 1.1 {.  SELEC
0300: 54 20 2a 20 46 52 4f 4d 20 74 31 20 57 48 45 52  T * FROM t1 WHER
0310: 45 20 63 31 3d 27 31 30 27 3b 0a 7d 20 7b 39 20  E c1='10';.} {9 
0320: 31 30 20 31 31 20 31 32 7d 0a 64 6f 5f 65 78 65  10 11 12}.do_exe
0330: 63 73 71 6c 5f 74 65 73 74 20 31 2e 32 20 7b 0a  csql_test 1.2 {.
0340: 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64 20 46    SELECT rowid F
0350: 52 4f 4d 20 74 31 3b 0a 7d 20 7b 31 20 32 20 33  ROM t1;.} {1 2 3
0360: 20 34 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f   4}..do_execsql_
0370: 74 65 73 74 20 32 2e 30 20 7b 0a 20 20 44 52 4f  test 2.0 {.  DRO
0380: 50 20 54 41 42 4c 45 20 74 31 3b 0a 20 20 43 52  P TABLE t1;.  CR
0390: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
03a0: 4c 45 20 74 65 6d 70 2e 74 32 20 55 53 49 4e 47  LE temp.t2 USING
03b0: 20 63 73 76 28 0a 20 20 20 20 64 61 74 61 3d 0a   csv(.    data=.
03c0: 27 31 2c 32 2c 33 2c 34 0a 35 2c 36 2c 37 2c 38  '1,2,3,4.5,6,7,8
03d0: 0a 39 2c 31 30 2c 31 31 2c 31 32 0a 31 33 2c 31  .9,10,11,12.13,1
03e0: 34 2c 31 35 2c 31 36 0a 27 2c 0a 20 20 20 20 63  4,15,16.',.    c
03f0: 6f 6c 75 6d 6e 73 3d 34 2c 0a 20 20 20 20 73 63  olumns=4,.    sc
0400: 68 65 6d 61 3d 27 43 52 45 41 54 45 20 54 41 42  hema='CREATE TAB
0410: 4c 45 20 74 32 28 61 20 49 4e 54 2c 20 62 20 54  LE t2(a INT, b T
0420: 45 58 54 2c 20 63 20 52 45 41 4c 2c 20 64 20 42  EXT, c REAL, d B
0430: 4c 4f 42 29 27 0a 20 20 29 3b 0a 20 20 53 45 4c  LOB)'.  );.  SEL
0440: 45 43 54 20 2a 20 46 52 4f 4d 20 74 32 20 57 48  ECT * FROM t2 WH
0450: 45 52 45 20 61 3d 39 3b 0a 7d 20 7b 39 20 31 30  ERE a=9;.} {9 10
0460: 20 31 31 20 31 32 7d 0a 64 6f 5f 65 78 65 63 73   11 12}.do_execs
0470: 71 6c 5f 74 65 73 74 20 32 2e 31 20 7b 0a 20 20  ql_test 2.1 {.  
0480: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 32  SELECT * FROM t2
0490: 20 57 48 45 52 45 20 62 3d 31 30 3b 0a 7d 20 7b   WHERE b=10;.} {
04a0: 39 20 31 30 20 31 31 20 31 32 7d 0a 64 6f 5f 65  9 10 11 12}.do_e
04b0: 78 65 63 73 71 6c 5f 74 65 73 74 20 32 2e 32 20  xecsql_test 2.2 
04c0: 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  {.  SELECT * FRO
04d0: 4d 20 74 32 20 57 48 45 52 45 20 63 3d 31 31 3b  M t2 WHERE c=11;
04e0: 0a 7d 20 7b 39 20 31 30 20 31 31 20 31 32 7d 0a  .} {9 10 11 12}.
04f0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0500: 32 2e 33 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a  2.3 {.  SELECT *
0510: 20 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20 64   FROM t2 WHERE d
0520: 3d 31 32 3b 0a 7d 20 7b 7d 0a 64 6f 5f 65 78 65  =12;.} {}.do_exe
0530: 63 73 71 6c 5f 74 65 73 74 20 32 2e 34 20 7b 0a  csql_test 2.4 {.
0540: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
0550: 74 32 20 57 48 45 52 45 20 64 3d 27 31 32 27 3b  t2 WHERE d='12';
0560: 0a 7d 20 7b 39 20 31 30 20 31 31 20 31 32 7d 0a  .} {9 10 11 12}.
0570: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0580: 32 2e 35 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a  2.5 {.  SELECT *
0590: 20 46 52 4f 4d 20 74 32 20 57 48 45 52 45 20 61   FROM t2 WHERE a
05a0: 3d 27 39 27 3b 0a 7d 20 7b 39 20 31 30 20 31 31  ='9';.} {9 10 11
05b0: 20 31 32 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c   12}..do_execsql
05c0: 5f 74 65 73 74 20 33 2e 30 20 7b 0a 20 20 44 52  _test 3.0 {.  DR
05d0: 4f 50 20 54 41 42 4c 45 20 74 32 3b 0a 20 20 43  OP TABLE t2;.  C
05e0: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
05f0: 42 4c 45 20 74 65 6d 70 2e 74 33 20 55 53 49 4e  BLE temp.t3 USIN
0600: 47 20 63 73 76 28 0a 20 20 20 20 64 61 74 61 3d  G csv(.    data=
0610: 0a 27 31 2c 32 2c 33 2c 34 0a 35 2c 36 2c 37 2c  .'1,2,3,4.5,6,7,
0620: 38 0a 39 2c 31 30 2c 31 31 2c 31 32 0a 31 33 2c  8.9,10,11,12.13,
0630: 31 34 2c 31 35 2c 31 36 0a 27 2c 0a 20 20 20 20  14,15,16.',.    
0640: 63 6f 6c 75 6d 6e 73 3d 34 2c 0a 20 20 20 20 73  columns=4,.    s
0650: 63 68 65 6d 61 3d 0a 20 20 20 20 20 20 27 43 52  chema=.      'CR
0660: 45 41 54 45 20 54 41 42 4c 45 20 74 33 28 61 20  EATE TABLE t3(a 
0670: 50 52 49 4d 41 52 59 20 4b 45 59 2c 62 20 54 45  PRIMARY KEY,b TE
0680: 58 54 2c 63 20 54 45 58 54 2c 64 20 54 45 58 54  XT,c TEXT,d TEXT
0690: 29 20 57 49 54 48 4f 55 54 20 52 4f 57 49 44 27  ) WITHOUT ROWID'
06a0: 2c 0a 20 20 20 20 74 65 73 74 66 6c 61 67 73 3d  ,.    testflags=
06b0: 31 0a 20 20 29 3b 0a 20 20 53 45 4c 45 43 54 20  1.  );.  SELECT 
06c0: 61 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20  a FROM t3 WHERE 
06d0: 62 3d 36 20 4f 52 20 63 3d 37 20 4f 52 20 64 3d  b=6 OR c=7 OR d=
06e0: 31 32 20 4f 52 44 45 52 20 42 59 20 2b 61 3b 0a  12 ORDER BY +a;.
06f0: 7d 20 7b 35 20 39 7d 0a 64 6f 5f 65 78 65 63 73  } {5 9}.do_execs
0700: 71 6c 5f 74 65 73 74 20 33 2e 31 20 7b 0a 20 20  ql_test 3.1 {.  
0710: 53 45 4c 45 43 54 20 61 20 46 52 4f 4d 20 74 33  SELECT a FROM t3
0720: 20 57 48 45 52 45 20 2b 62 3d 36 20 4f 52 20 63   WHERE +b=6 OR c
0730: 3d 37 20 4f 52 20 64 3d 31 32 20 4f 52 44 45 52  =7 OR d=12 ORDER
0740: 20 42 59 20 2b 61 3b 0a 7d 20 7b 35 20 39 7d 0a   BY +a;.} {5 9}.
0750: 0a 23 20 54 68 65 20 72 6f 77 69 64 20 63 6f 6c  .# The rowid col
0760: 75 6d 6e 20 69 73 20 6e 6f 74 20 76 69 73 69 62  umn is not visib
0770: 6c 65 20 6f 6e 20 61 20 57 49 54 48 4f 55 54 20  le on a WITHOUT 
0780: 52 4f 57 49 44 20 76 69 72 74 75 61 6c 20 74 61  ROWID virtual ta
0790: 62 6c 65 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f  ble.do_catchsql_
07a0: 74 65 73 74 20 33 2e 32 20 7b 0a 20 20 53 45 4c  test 3.2 {.  SEL
07b0: 45 43 54 20 72 6f 77 69 64 2c 20 61 20 46 52 4f  ECT rowid, a FRO
07c0: 4d 20 74 33 3b 0a 7d 20 7b 31 20 7b 6e 6f 20 73  M t3;.} {1 {no s
07d0: 75 63 68 20 63 6f 6c 75 6d 6e 3a 20 72 6f 77 69  uch column: rowi
07e0: 64 7d 7d 0a 0a 23 20 4d 75 6c 74 69 2d 63 6f 6c  d}}..# Multi-col
07f0: 75 6d 6e 20 57 49 54 48 4f 55 54 20 52 4f 57 49  umn WITHOUT ROWI
0800: 44 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  D virtual tables
0810: 20 6d 61 79 20 6e 6f 74 20 62 65 20 77 72 69 74   may not be writ
0820: 61 62 6c 65 2e 0a 64 6f 5f 63 61 74 63 68 73 71  able..do_catchsq
0830: 6c 5f 74 65 73 74 20 34 2e 30 20 7b 0a 20 20 44  l_test 4.0 {.  D
0840: 52 4f 50 20 54 41 42 4c 45 20 74 33 3b 0a 20 20  ROP TABLE t3;.  
0850: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
0860: 41 42 4c 45 20 74 65 6d 70 2e 74 34 20 55 53 49  ABLE temp.t4 USI
0870: 4e 47 20 63 73 76 5f 77 72 28 0a 20 20 20 20 64  NG csv_wr(.    d
0880: 61 74 61 3d 0a 27 31 2c 32 2c 33 2c 34 0a 35 2c  ata=.'1,2,3,4.5,
0890: 36 2c 37 2c 38 0a 39 2c 31 30 2c 31 31 2c 31 32  6,7,8.9,10,11,12
08a0: 0a 31 33 2c 31 34 2c 31 35 2c 31 36 27 2c 0a 20  .13,14,15,16',. 
08b0: 20 20 20 63 6f 6c 75 6d 6e 73 3d 34 2c 0a 20 20     columns=4,.  
08c0: 20 20 73 63 68 65 6d 61 3d 0a 20 20 20 20 20 20    schema=.      
08d0: 27 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 33  'CREATE TABLE t3
08e0: 28 61 2c 62 2c 63 2c 64 2c 50 52 49 4d 41 52 59  (a,b,c,d,PRIMARY
08f0: 20 4b 45 59 28 61 2c 62 29 29 20 57 49 54 48 4f   KEY(a,b)) WITHO
0900: 55 54 20 52 4f 57 49 44 27 2c 0a 20 20 20 20 74  UT ROWID',.    t
0910: 65 73 74 66 6c 61 67 73 3d 31 0a 20 20 29 3b 0a  estflags=1.  );.
0920: 7d 20 7b 31 20 7b 76 74 61 62 6c 65 20 63 6f 6e  } {1 {vtable con
0930: 73 74 72 75 63 74 6f 72 20 66 61 69 6c 65 64 3a  structor failed:
0940: 20 74 34 7d 7d 0a 0a 23 20 57 49 54 48 4f 55 54   t4}}..# WITHOUT
0950: 20 52 4f 57 49 44 20 74 61 62 6c 65 73 20 77 69   ROWID tables wi
0960: 74 68 20 61 20 73 69 6e 67 6c 65 2d 63 6f 6c 75  th a single-colu
0970: 6d 6e 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6d  mn PRIMARY KEY m
0980: 61 79 20 62 65 20 77 72 69 74 61 62 6c 65 2e 0a  ay be writable..
0990: 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74 65 73 74  do_catchsql_test
09a0: 20 34 2e 31 20 7b 0a 20 20 44 52 4f 50 20 54 41   4.1 {.  DROP TA
09b0: 42 4c 45 20 49 46 20 45 58 49 53 54 53 20 74 34  BLE IF EXISTS t4
09c0: 3b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55  ;.  CREATE VIRTU
09d0: 41 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e 74 34  AL TABLE temp.t4
09e0: 20 55 53 49 4e 47 20 63 73 76 5f 77 72 28 0a 20   USING csv_wr(. 
09f0: 20 20 20 64 61 74 61 3d 0a 27 31 2c 32 2c 33 2c     data=.'1,2,3,
0a00: 34 0a 35 2c 36 2c 37 2c 38 0a 39 2c 31 30 2c 31  4.5,6,7,8.9,10,1
0a10: 31 2c 31 32 0a 31 33 2c 31 34 2c 31 35 2c 31 36  1,12.13,14,15,16
0a20: 27 2c 0a 20 20 20 20 63 6f 6c 75 6d 6e 73 3d 34  ',.    columns=4
0a30: 2c 0a 20 20 20 20 73 63 68 65 6d 61 3d 0a 20 20  ,.    schema=.  
0a40: 20 20 20 20 27 43 52 45 41 54 45 20 54 41 42 4c      'CREATE TABL
0a50: 45 20 74 33 28 61 2c 62 2c 63 2c 64 2c 50 52 49  E t3(a,b,c,d,PRI
0a60: 4d 41 52 59 20 4b 45 59 28 62 29 29 20 57 49 54  MARY KEY(b)) WIT
0a70: 48 4f 55 54 20 52 4f 57 49 44 27 2c 0a 20 20 20  HOUT ROWID',.   
0a80: 20 74 65 73 74 66 6c 61 67 73 3d 31 0a 20 20 29   testflags=1.  )
0a90: 3b 0a 7d 20 7b 30 20 7b 7d 7d 0a 0a 64 6f 5f 63  ;.} {0 {}}..do_c
0aa0: 61 74 63 68 73 71 6c 5f 74 65 73 74 20 34 2e 32  atchsql_test 4.2
0ab0: 20 7b 0a 20 20 44 52 4f 50 20 54 41 42 4c 45 20   {.  DROP TABLE 
0ac0: 49 46 20 45 58 49 53 54 53 20 74 35 3b 0a 20 20  IF EXISTS t5;.  
0ad0: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
0ae0: 41 42 4c 45 20 74 65 6d 70 2e 74 35 20 55 53 49  ABLE temp.t5 USI
0af0: 4e 47 20 63 73 76 5f 77 72 28 0a 20 20 20 20 20  NG csv_wr(.     
0b00: 20 64 61 74 61 3d 0a 20 20 20 20 20 20 27 31 2c   data=.      '1,
0b10: 32 2c 33 2c 34 0a 20 20 20 20 20 20 35 2c 36 2c  2,3,4.      5,6,
0b20: 37 2c 38 0a 20 20 20 20 20 20 39 2c 31 30 2c 31  7,8.      9,10,1
0b30: 31 2c 31 32 0a 20 20 20 20 20 20 31 33 2c 31 34  1,12.      13,14
0b40: 2c 31 35 2c 31 36 27 2c 0a 20 20 20 20 20 20 63  ,15,16',.      c
0b50: 6f 6c 75 6d 6e 73 3d 34 2c 0a 20 20 20 20 20 20  olumns=4,.      
0b60: 73 63 68 65 6d 61 3d 0a 20 20 20 20 20 20 27 43  schema=.      'C
0b70: 52 45 41 54 45 20 54 41 42 4c 45 20 74 33 28 61  REATE TABLE t3(a
0b80: 2c 62 2c 63 2c 64 29 20 57 49 54 48 4f 55 54 20  ,b,c,d) WITHOUT 
0b90: 52 4f 57 49 44 27 2c 0a 20 20 20 20 20 20 74 65  ROWID',.      te
0ba0: 73 74 66 6c 61 67 73 3d 31 0a 20 20 20 20 20 20  stflags=1.      
0bb0: 29 3b 0a 7d 20 7b 31 20 7b 76 74 61 62 6c 65 20  );.} {1 {vtable 
0bc0: 63 6f 6e 73 74 72 75 63 74 6f 72 20 66 61 69 6c  constructor fail
0bd0: 65 64 3a 20 74 35 7d 7d 0a 0a 23 20 32 30 31 38  ed: t5}}..# 2018
0be0: 2d 30 34 2d 32 34 0a 23 20 4d 65 6d 6f 72 79 20  -04-24.# Memory 
0bf0: 6c 65 61 6b 20 72 65 70 6f 72 74 65 64 20 6f 6e  leak reported on
0c00: 20 74 68 65 20 73 71 6c 69 74 65 2d 75 73 65 72   the sqlite-user
0c10: 73 20 6d 61 69 6c 69 6e 67 20 6c 69 73 74 20 62  s mailing list b
0c20: 79 20 52 61 6c 66 20 4a 75 6e 6b 65 72 2e 0a 23  y Ralf Junker..#
0c30: 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74 65 73  .do_catchsql_tes
0c40: 74 20 34 2e 33 20 7b 0a 20 20 43 52 45 41 54 45  t 4.3 {.  CREATE
0c50: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 49   VIRTUAL TABLE I
0c60: 46 20 4e 4f 54 20 45 58 49 53 54 53 20 74 65 6d  F NOT EXISTS tem
0c70: 70 2e 74 31 0a 20 20 55 53 49 4e 47 20 63 73 76  p.t1.  USING csv
0c80: 28 66 69 6c 65 6e 61 6d 65 3d 27 46 69 6c 65 44  (filename='FileD
0c90: 6f 65 73 4e 6f 74 45 78 69 73 74 2e 63 73 76 27  oesNotExist.csv'
0ca0: 29 3b 0a 7d 20 7b 31 20 7b 63 61 6e 6e 6f 74 20  );.} {1 {cannot 
0cb0: 6f 70 65 6e 20 27 46 69 6c 65 44 6f 65 73 4e 6f  open 'FileDoesNo
0cc0: 74 45 78 69 73 74 2e 63 73 76 27 20 66 6f 72 20  tExist.csv' for 
0cd0: 72 65 61 64 69 6e 67 7d 7d 0a 0a 23 20 32 30 31  reading}}..# 201
0ce0: 38 2d 30 36 2d 30 32 0a 23 20 50 72 6f 62 6c 65  8-06-02.# Proble
0cf0: 6d 20 77 69 74 68 20 73 69 6e 67 6c 65 2d 63 6f  m with single-co
0d00: 6c 75 6d 6e 20 43 53 56 20 73 75 70 70 6f 72 74  lumn CSV support
0d10: 20 72 65 70 6f 72 74 65 64 20 6f 6e 20 74 68 65   reported on the
0d20: 20 6d 61 69 6c 69 6e 67 20 6c 69 73 74 0a 23 20   mailing list.# 
0d30: 62 79 20 54 72 65 6e 74 20 57 2e 20 42 75 63 6b  by Trent W. Buck
0d40: 2e 0a 23 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ..#.do_execsql_t
0d50: 65 73 74 20 34 2e 34 20 7b 0a 20 20 43 52 45 41  est 4.4 {.  CREA
0d60: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45  TE VIRTUAL TABLE
0d70: 20 74 65 6d 70 2e 74 72 65 6e 74 20 55 53 49 4e   temp.trent USIN
0d80: 47 20 63 73 76 28 64 61 74 61 3d 27 31 27 29 3b  G csv(data='1');
0d90: 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  .  SELECT * FROM
0da0: 20 74 72 65 6e 74 3b 0a 7d 20 7b 31 7d 0a 0a 66   trent;.} {1}..f
0db0: 69 6e 69 73 68 5f 74 65 73 74 0a                 inish_test.