]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
:-) (CVS 16)
authordrh <drh@noemail.net>
Tue, 30 May 2000 17:30:35 +0000 (17:30 +0000)
committerdrh <drh@noemail.net>
Tue, 30 May 2000 17:30:35 +0000 (17:30 +0000)
FossilOrigin-Name: b56d1b9c0f957f3dfb380c01d31ff7c08bcd523b

manifest
manifest.uuid
src/build.c
test/copy.test [new file with mode: 0644]

index 48d5603d3a97c46eb2c5a3a0e8b1b93c982ba19c..c2283e6867a57ea4befc31acd908ea2026fd7808 100644 (file)
--- 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
index 61ae20b3fe64e6ad3f0eb08f24b25ad6b94285df..114f583e804df60aade60c7c2e20c5e168b131ea 100644 (file)
@@ -1 +1 @@
-8d66c7355de1d87b25c4fb92d0ef3603da72899a
\ No newline at end of file
+b56d1b9c0f957f3dfb380c01d31ff7c08bcd523b
\ No newline at end of file
index 34d200d26567dbeb8a430c30f3fd6ce905750d7c..bb950efb9dcc88c6c1c2b58f22ed1d78a1a5e675 100644 (file)
@@ -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 (file)
index 0000000..fa9df99
--- /dev/null
@@ -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