From: drh Date: Tue, 30 May 2000 17:30:35 +0000 (+0000) Subject: :-) (CVS 16) X-Git-Tag: version-3.6.10~6086 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b766599b70d1ecb8ad2e726dfae442ecf9be4023;p=thirdparty%2Fsqlite.git :-) (CVS 16) FossilOrigin-Name: b56d1b9c0f957f3dfb380c01d31ff7c08bcd523b --- diff --git a/manifest b/manifest index 48d5603d3a..c2283e6867 100644 --- a/manifest +++ b/manifest @@ -1,12 +1,12 @@ -C :-)\s(CVS\s15) -D 2000-05-30T16:27:04 +C :-)\s(CVS\s16) +D 2000-05-30T17:30:36 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4 F Makefile.in 89921c1ee4de75275bfadfbac198396da31704d1 F README 6b5960603c7f8bf42fc022b4b6436f242f238dbb F configure 00a5b5c82147a576fa6e82d7c1b0d55c321d6d2c x F configure.in 6ccfd5fc80517f7cfe605a7fc7e0f62d962a233c F doc/lemon.html e233a3e97a779c7a87e1bc4528c664a58e49dd47 -F src/build.c 971796c068b8ae25b476f924e5e0da0b57adb9e6 +F src/build.c 82e7dfdf900428d706ab4f50e72732ce9110767a F src/dbbe.c ab05293e89525041eaab8b4aca10516db3648792 F src/dbbe.h bedeb3a0985bb584458e7849fb59927e99e751e6 F src/main.c 25cce7bce0eb3ba10bada7c05f4b38dc6dbbc86f @@ -21,6 +21,7 @@ F src/vdbe.c 117ce5541143e3af9dccdc15c22c4920a7b9bdb4 F src/vdbe.h 03de26632f2e608c2a44a40262fbba21a8bdfd81 F src/where.c be3973952e9bb5d2bb0bc5523b03f5d1f9e9d6f9 F test/all.test 66a8a5b8291a472157944edcdce51a320ebd1f35 +F test/copy.test 641bd3cfaab61c4ee32889587e21e4c70788a97a F test/delete.test 814d53e3b0d2d7069fb17e005d4041454d6585d4 F test/expr.test 11e00880d2de0f60ff1ba7fdd4e09a0d72a01910 F test/index.test 8d4f26901a5582daa353fe3c8266cbf4a53af830 @@ -37,7 +38,7 @@ F tool/renumberOps.awk 6d067177ad5f8d711b79577b462da9b3634bd0a9 F www/c_interface.tcl f875864edf7974157d1c257ca08de854660882a5 F www/index.tcl 2466d1b2e26c6f354b0acedee12025309a216799 F www/sqlite.tcl 947e067bcc347dc767af4c1a6e5a8d47d8404aa3 -P 1bb8ee8d9f1d3c409a11910e7552e4bb5e7f5f87 -R 0bda635e569bcbbf1f49ce4a3f5d3df9 +P 8d66c7355de1d87b25c4fb92d0ef3603da72899a +R d80f9589af9e1517c7c756c7ca40c0f1 U drh -Z 1c759b788ddf2200404a81ace8a2be6e +Z 0d13d400c7a8e0dc46e87c85f7c6e1d5 diff --git a/manifest.uuid b/manifest.uuid index 61ae20b3fe..114f583e80 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8d66c7355de1d87b25c4fb92d0ef3603da72899a \ No newline at end of file +b56d1b9c0f957f3dfb380c01d31ff7c08bcd523b \ No newline at end of file diff --git a/src/build.c b/src/build.c index 34d200d265..bb950efb9d 100644 --- a/src/build.c +++ b/src/build.c @@ -24,7 +24,7 @@ ** This file contains C code routines that are called by the parser ** when syntax rules are reduced. ** -** $Id: build.c,v 1.7 2000/05/30 16:27:04 drh Exp $ +** $Id: build.c,v 1.8 2000/05/30 17:30:36 drh Exp $ */ #include "sqliteInt.h" @@ -1482,6 +1482,7 @@ void sqliteCopy( if( v ){ addr = sqliteVdbeAddOp(v, OP_FileOpen, 0, 0, 0, 0); sqliteVdbeChangeP3(v, addr, pFilename->z, pFilename->n); + sqliteVdbeDequoteP3(v, addr); sqliteVdbeAddOp(v, OP_Open, 0, 0, pTab->zName, 0); for(i=1, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){ sqliteVdbeAddOp(v, OP_Open, i, 0, pIdx->zName, 0); diff --git a/test/copy.test b/test/copy.test new file mode 100644 index 0000000000..fa9df9922b --- /dev/null +++ b/test/copy.test @@ -0,0 +1,117 @@ +# Copyright (c) 1999, 2000 D. Richard Hipp +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# Author contact information: +# drh@hwaci.com +# http://www.hwaci.com/drh/ +# +#*********************************************************************** +# This file implements regression tests for SQLite library. The +# focus of this file is testing the COPY statement. +# +# $Id: copy.test,v 1.1 2000/05/30 17:30:36 drh Exp $ + +set testdir [file dirname $argv0] +source $testdir/tester.tcl + +# Create a file of data from which to copy. +# +set f [open data1.txt w] +puts $f "11\t22\t33" +puts $f "22\t33\t11" +close $f +set f [open data2.txt w] +puts $f "11\t22\t33" +puts $f "\\." +puts $f "22\t33\t11" +close $f +set f [open data3.txt w] +puts $f "11\t22\t33\t44" +puts $f "22\t33\t11" +close $f +set f [open data4.txt w] +puts $f "11 | 22 | 33" +puts $f "22 | 33 | 11" +close $f +set f [open data5.txt w] +puts $f "11|22|33" +puts $f "22|33|11" +close $f + +# Try to COPY into a non-existant table. +# +do_test copy-1.1 { + set v [catch {execsql {COPY test1 FROM 'data1.txt'}} msg] + lappend v $msg +} {1 {no such table: test1}} + +# Try to insert into sqlite_master +# +do_test copy-1.2 { + set v [catch {execsql {COPY sqlite_master FROM 'data2.txt'}} msg] + lappend v $msg +} {1 {table sqlite_master may not be modified}} + +# Do some actual inserts +# +do_test copy-1.3 { + execsql {CREATE TABLE test1(one int, two int, three int)} + execsql {COPY test1 FROM 'data1.txt'} + execsql {SELECT * FROM test1 ORDER BY one} +} {11 22 33 22 33 11} + +# Make sure input terminates at \. +# +do_test copy-1.4 { + execsql {DELETE FROM test1} + execsql {COPY test1 FROM 'data2.txt'} + execsql {SELECT * FROM test1 ORDER BY one} +} {11 22 33} + +# Test out the USING DELIMITERS clause +# +do_test copy-1.5 { + execsql {DELETE FROM test1} + execsql {COPY test1 FROM 'data4.txt' USING DELIMITERS ' | '} + execsql {SELECT * FROM test1 ORDER BY one} +} {11 22 33 22 33 11} +do_test copy-1.6 { + execsql {DELETE FROM test1} + execsql {COPY test1 FROM 'data5.txt' USING DELIMITERS '|'} + execsql {SELECT * FROM test1 ORDER BY one} +} {11 22 33 22 33 11} + +# Try inserting really long data +# +set x {} +for {set i 0} {$i<100} {incr i} { + append x "($i)-abcdefghijklmnopqrstyvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ-" +} +do_test copy-2.1 { + execsql {CREATE TABLE test2(a int, x text)} + set f [open data21.txt w] + puts $f "123\t$x" + close $f + execsql {COPY test2 FROM 'data21.txt'} + execsql {SELECT x from test2} +} $x + +# Cleanup +# +file delete -force data1.txt data2.txt data3.txt data4.txt data5.txt data21.txt + +finish_test