fix the UPDATE bug (CVS 185)
FossilOrigin-Name: 99aae9aaa9f53d1be6600f8598f66594692aae39
This commit is contained in:
parent
4e0dec47d7
commit
4f3c63e475
20
manifest
20
manifest
@ -1,9 +1,9 @@
|
||||
C Version\s1.0.20\s(CVS\s484)
|
||||
D 2001-02-11T17:00:00
|
||||
C fix\sthe\sUPDATE\sbug\s(CVS\s185)
|
||||
D 2001-02-19T18:24:22
|
||||
F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
|
||||
F Makefile.in 7efa81e2985b45ba73db27d55b70cc927f5abfd7
|
||||
F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
|
||||
F VERSION 153302ac968751d918e44c3f26774dcfe50ddc0a
|
||||
F VERSION 4686794d487da05ffcbf92801fd0754f6dfa0c39
|
||||
F configure 3dc1edb9dcf60215e31ff72b447935ab62211442 x
|
||||
F configure.in d892ca33db7e88a055519ce2f36dcb11020e8fff
|
||||
F doc/lemon.html e233a3e97a779c7a87e1bc4528c664a58e49dd47
|
||||
@ -42,7 +42,7 @@ F src/update.c 9692fbac8e95fdbc5318d39db576aa6c57b9c8ab
|
||||
F src/util.c 0298100e6427a4b644f767ede12276fa7170fbb6
|
||||
F src/vdbe.c 6e613f25b0fe1c81b097f46a8fe68c68c39a6abf
|
||||
F src/vdbe.h d94224ad39c8e9de83dda8d8f960059eb71c0780
|
||||
F src/where.c fcc2c2c84fe81a008485a32c680db3eb0aee5d22
|
||||
F src/where.c e0865f52398662b541bea29ded6aa9687d9f3645
|
||||
F test/all.test 15cac2f6b2d4c55bf896212aff3cc9d6597b0490
|
||||
F test/copy.test b77a1214bd7756f2849d5c4fa6e715c0ff0c34eb
|
||||
F test/dbbe.test 27deeebf2a01da97cabaab8dc7f34ca3b51a0123
|
||||
@ -64,7 +64,7 @@ F test/sort.test d582086c4bb7df3fbf50aa72e69d7e235e9f8e31
|
||||
F test/subselect.test bf8b251a92fb091973c1c469ce499dc9648a41d5
|
||||
F test/table.test eaa25951c0f18615763cd3dc248ea4bc38739c05
|
||||
F test/tester.tcl e24caef6d07c58c16b24e7afc967464b288a4065
|
||||
F test/update.test 62f6ce99ff31756aab0ca832ff6d34c5a87b6250
|
||||
F test/update.test 72c0c93310483b86dc904a992220c5b84c7ce100
|
||||
F test/vacuum.test 2127748ff4ddb409212efbb6d9fb9c469ea1b49c
|
||||
F test/where.test bbab5a308055fb6087dc23d600b4ad2b72797397
|
||||
F tool/gdbmdump.c 529e67c78d920606ba196326ea55b57b75fcc82b
|
||||
@ -80,18 +80,18 @@ F www/arch.fig 4f246003b7da23bd63b8b0af0618afb4ee3055c8
|
||||
F www/arch.png 8dae0766d42ed3de9ed013c1341a5792bcf633e6
|
||||
F www/arch.tcl a40380c1fe0080c43e6cc5c20ed70731511b06be
|
||||
F www/c_interface.tcl 11be2d5826eb7d6efd629751d3b483c1ed78ba14
|
||||
F www/changes.tcl 2bd34627e9dc459f53d7e11630d92660be974b10
|
||||
F www/changes.tcl 50b0890caa8e2b9622237aef27bdf92c90255b35
|
||||
F www/crosscompile.tcl c99efacb3aefaa550c6e80d91b240f55eb9fd33e
|
||||
F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c
|
||||
F www/fileformat.tcl cfb7fba80b7275555281ba2f256c00734bcdd1c9
|
||||
F www/index.tcl b19418d506f90968deef972bf1b427d98bdf13e0
|
||||
F www/index.tcl 02fe82f3a50d5f5b831afeafb62fc64ea5e63b32
|
||||
F www/lang.tcl 9192e114b19987e630a41e879585b87006eb84a1
|
||||
F www/mingw.tcl fc5f4ba9d336b6e8c97347cc6496d6162461ef60
|
||||
F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f
|
||||
F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f
|
||||
F www/tclsqlite.tcl 06f81c401f79a04f2c5ebfb97e7c176225c0aef2
|
||||
F www/vdbe.tcl 0c8aaa529dd216ccbf7daaabd80985e413d5f9ad
|
||||
P 4f00e27f17a15504543c5bbb8765c88bacd7257e
|
||||
R 3ed34f8024572f0ced21ee5caed411da
|
||||
P eb0a523c49df65ef3454b8d7e05a6a852b24fc8b
|
||||
R 59db407686a1360be2fb4d74bb42df04
|
||||
U drh
|
||||
Z 78a5bacec5b12e6bbdd9fbd83a1f5831
|
||||
Z 5cfb38fc484d8e92722ad127ca28c196
|
||||
|
@ -1 +1 @@
|
||||
eb0a523c49df65ef3454b8d7e05a6a852b24fc8b
|
||||
99aae9aaa9f53d1be6600f8598f66594692aae39
|
@ -25,7 +25,7 @@
|
||||
** the WHERE clause of SQL statements. Also found here are subroutines
|
||||
** to generate VDBE code to evaluate expressions.
|
||||
**
|
||||
** $Id: where.c,v 1.10 2001/01/15 22:51:12 drh Exp $
|
||||
** $Id: where.c,v 1.11 2001/02/19 18:24:22 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
|
||||
@ -338,8 +338,12 @@ WhereInfo *sqliteWhereBegin(
|
||||
if( (aExpr[j].prereqRight & loopMask)!=aExpr[j].prereqRight ) continue;
|
||||
if( (aExpr[j].prereqLeft & loopMask)!=aExpr[j].prereqLeft ) continue;
|
||||
if( haveKey ){
|
||||
if( pushKey && i==pTabList->nId-1 ){
|
||||
sqliteVdbeAddOp(v, OP_Dup, 0, 0, 0, 0);
|
||||
}else{
|
||||
haveKey = 0;
|
||||
}
|
||||
sqliteVdbeAddOp(v, OP_Fetch, base+idx, 0, 0, 0);
|
||||
haveKey = 0;
|
||||
}
|
||||
sqliteExprIfFalse(pParse, aExpr[j].p, cont);
|
||||
aExpr[j].p = 0;
|
||||
|
300
test/update.test
300
test/update.test
@ -23,7 +23,7 @@
|
||||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this file is testing the UPDATE statement.
|
||||
#
|
||||
# $Id: update.test,v 1.4 2000/06/21 13:59:14 drh Exp $
|
||||
# $Id: update.test,v 1.5 2001/02/19 18:24:22 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -90,47 +90,301 @@ do_test update-3.8 {
|
||||
execsql {UPDATE test1 SET F2=f1, F1=f2}
|
||||
execsql {SELECT * FROM test1 ORDER BY F1}
|
||||
} {2 1 4 2 8 3 16 4 32 5 64 6 128 7 256 8 512 9 1024 10}
|
||||
|
||||
# Create an index and make sure updating works with an index.
|
||||
#
|
||||
do_test update-3.9 {
|
||||
execsql {CREATE INDEX index1 ON test1(f1)}
|
||||
execsql {CREATE INDEX index2 ON test1(f1)}
|
||||
execsql {UPDATE test1 SET f1=1025 WHERE f2==10}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1}
|
||||
} {2 1 4 2 8 3 16 4 32 5 64 6 128 7 256 8 512 9 1025 10}
|
||||
do_test update-3.10 {
|
||||
execsql {SELECT * FROM test1 WHERE f1=1025}
|
||||
} {1025 10}
|
||||
do_test update-3.11 {
|
||||
execsql {UPDATE test1 SET f2=11 WHERE f1==1025}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1}
|
||||
} {2 1 4 2 8 3 16 4 32 5 64 6 128 7 256 8 512 9 1025 11}
|
||||
do_test update-3.12 {
|
||||
execsql {SELECT * FROM test1 WHERE f1=1025}
|
||||
} {1025 11}
|
||||
execsql {UPDATE test1 SET F2=f1, F1=f2}
|
||||
execsql {SELECT * FROM test1 ORDER BY F1}
|
||||
} {1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1024}
|
||||
|
||||
# Create duplicate entries and make sure updating still
|
||||
# works.
|
||||
#
|
||||
do_test update-4.0 {
|
||||
execsql {
|
||||
DELETE FROM test1 WHERE f1<=5;
|
||||
INSERT INTO test1(f1,f2) VALUES(8,88);
|
||||
INSERT INTO test1(f1,f2) VALUES(8,888);
|
||||
INSERT INTO test1(f1,f2) VALUES(77,128);
|
||||
INSERT INTO test1(f1,f2) VALUES(777,128);
|
||||
}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-4.1 {
|
||||
execsql {UPDATE test1 SET f2=f2+1 WHERE f1==8}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 89 8 257 8 889 9 512 10 1024 77 128 777 128}
|
||||
do_test update-4.2 {
|
||||
execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2>800}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 89 8 257 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-4.3 {
|
||||
execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2<800}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-4.4 {
|
||||
execsql {UPDATE test1 SET f1=f1+1 WHERE f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 778 128}
|
||||
do_test update-4.5 {
|
||||
execsql {UPDATE test1 SET f1=f1-1 WHERE f1>100 and f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 777 128}
|
||||
do_test update-4.6 {
|
||||
execsql {UPDATE test1 SET f1=f1-1 WHERE f1<=100 and f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
|
||||
# Repeat the previous sequence of tests with an index.
|
||||
#
|
||||
do_test update-5.0 {
|
||||
execsql {CREATE INDEX idx1 ON test1(f1)}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-5.1 {
|
||||
execsql {UPDATE test1 SET f2=f2+1 WHERE f1==8}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 89 8 257 8 889 9 512 10 1024 77 128 777 128}
|
||||
do_test update-5.2 {
|
||||
execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2>800}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 89 8 257 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-5.3 {
|
||||
execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2<800}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-5.4 {
|
||||
execsql {UPDATE test1 SET f1=f1+1 WHERE f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 778 128}
|
||||
do_test update-5.4.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}
|
||||
} {78 128}
|
||||
do_test update-5.4.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {778 128}
|
||||
do_test update-5.4.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 128 8 256 8 888}
|
||||
do_test update-5.5 {
|
||||
execsql {UPDATE test1 SET f1=f1-1 WHERE f1>100 and f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 777 128}
|
||||
do_test update-5.5.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}
|
||||
} {78 128}
|
||||
do_test update-5.5.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-5.5.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}
|
||||
} {777 128}
|
||||
do_test update-5.5.4 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 128 8 256 8 888}
|
||||
do_test update-5.6 {
|
||||
execsql {UPDATE test1 SET f1=f1-1 WHERE f1<=100 and f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-5.6.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==77 ORDER BY f1,f2}
|
||||
} {77 128}
|
||||
do_test update-5.6.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-5.6.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}
|
||||
} {777 128}
|
||||
do_test update-5.6.4 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 256 8 888}
|
||||
|
||||
# Repeat the previous sequence of tests with a different index.
|
||||
#
|
||||
do_test update-6.0 {
|
||||
execsql {DROP INDEX idx1}
|
||||
execsql {CREATE INDEX idx1 ON test1(f2)}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-6.1 {
|
||||
execsql {UPDATE test1 SET f2=f2+1 WHERE f1==8}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 89 8 257 8 889 9 512 10 1024 77 128 777 128}
|
||||
do_test update-6.1.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 89 8 257 8 889}
|
||||
do_test update-6.1.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f2==89 ORDER BY f1,f2}
|
||||
} {8 89}
|
||||
do_test update-6.1.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==88 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-6.2 {
|
||||
execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2>800}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 89 8 257 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-6.3 {
|
||||
execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2<800}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-6.3.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 256 8 888}
|
||||
do_test update-6.3.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f2==89 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-6.3.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f2==88 ORDER BY f1,f2}
|
||||
} {8 88}
|
||||
do_test update-6.4 {
|
||||
execsql {UPDATE test1 SET f1=f1+1 WHERE f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 778 128}
|
||||
do_test update-6.4.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}
|
||||
} {78 128}
|
||||
do_test update-6.4.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {778 128}
|
||||
do_test update-6.4.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 128 8 256 8 888}
|
||||
do_test update-6.5 {
|
||||
execsql {UPDATE test1 SET f1=f1-1 WHERE f1>100 and f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 777 128}
|
||||
do_test update-6.5.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}
|
||||
} {78 128}
|
||||
do_test update-6.5.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-6.5.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}
|
||||
} {777 128}
|
||||
do_test update-6.5.4 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 128 8 256 8 888}
|
||||
do_test update-6.6 {
|
||||
execsql {UPDATE test1 SET f1=f1-1 WHERE f1<=100 and f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-6.6.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==77 ORDER BY f1,f2}
|
||||
} {77 128}
|
||||
do_test update-6.6.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-6.6.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}
|
||||
} {777 128}
|
||||
do_test update-6.6.4 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 256 8 888}
|
||||
|
||||
# Repeat the previous sequence of tests with multiple
|
||||
# indices
|
||||
#
|
||||
do_test update-7.0 {
|
||||
execsql {CREATE INDEX idx2 ON test1(f2)}
|
||||
execsql {CREATE INDEX idx3 ON test1(f1,f2)}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-7.1 {
|
||||
execsql {UPDATE test1 SET f2=f2+1 WHERE f1==8}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 89 8 257 8 889 9 512 10 1024 77 128 777 128}
|
||||
do_test update-7.1.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 89 8 257 8 889}
|
||||
do_test update-7.1.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f2==89 ORDER BY f1,f2}
|
||||
} {8 89}
|
||||
do_test update-7.1.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==88 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-7.2 {
|
||||
execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2>800}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 89 8 257 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-7.3 {
|
||||
execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2<800}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-7.3.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 256 8 888}
|
||||
do_test update-7.3.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f2==89 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-7.3.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f2==88 ORDER BY f1,f2}
|
||||
} {8 88}
|
||||
do_test update-7.4 {
|
||||
execsql {UPDATE test1 SET f1=f1+1 WHERE f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 778 128}
|
||||
do_test update-7.4.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}
|
||||
} {78 128}
|
||||
do_test update-7.4.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {778 128}
|
||||
do_test update-7.4.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 128 8 256 8 888}
|
||||
do_test update-7.5 {
|
||||
execsql {UPDATE test1 SET f1=f1-1 WHERE f1>100 and f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 777 128}
|
||||
do_test update-7.5.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}
|
||||
} {78 128}
|
||||
do_test update-7.5.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-7.5.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}
|
||||
} {777 128}
|
||||
do_test update-7.5.4 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 128 8 256 8 888}
|
||||
do_test update-7.6 {
|
||||
execsql {UPDATE test1 SET f1=f1-1 WHERE f1<=100 and f2==128}
|
||||
execsql {SELECT * FROM test1 ORDER BY f1,f2}
|
||||
} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}
|
||||
do_test update-7.6.1 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==77 ORDER BY f1,f2}
|
||||
} {77 128}
|
||||
do_test update-7.6.2 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}
|
||||
} {}
|
||||
do_test update-7.6.3 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}
|
||||
} {777 128}
|
||||
do_test update-7.6.4 {
|
||||
execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}
|
||||
} {8 88 8 256 8 888}
|
||||
|
||||
# Error messages
|
||||
#
|
||||
do_test update-4.1 {
|
||||
do_test update-9.1 {
|
||||
set v [catch {execsql {
|
||||
UPDATE test1 SET x=11 WHERE f1=1025
|
||||
}} msg]
|
||||
lappend v $msg
|
||||
} {1 {no such column: x}}
|
||||
do_test update-4.2 {
|
||||
do_test update-9.2 {
|
||||
set v [catch {execsql {
|
||||
UPDATE test1 SET f1=x(11) WHERE f1=1025
|
||||
}} msg]
|
||||
lappend v $msg
|
||||
} {1 {no such function: x}}
|
||||
do_test update-4.3 {
|
||||
do_test update-9.3 {
|
||||
set v [catch {execsql {
|
||||
UPDATE test1 SET f1=11 WHERE x=1025
|
||||
}} msg]
|
||||
lappend v $msg
|
||||
} {1 {no such column: x}}
|
||||
do_test update-4.4 {
|
||||
do_test update-9.4 {
|
||||
set v [catch {execsql {
|
||||
UPDATE test1 SET f1=11 WHERE x(f1)=1025
|
||||
}} msg]
|
||||
|
@ -17,6 +17,12 @@ proc chng {date desc} {
|
||||
puts "<DD><P><UL>$desc</UL></P></DD>"
|
||||
}
|
||||
|
||||
chng {2001 Feb 19 (1.0.21)} {
|
||||
<li>The UPDATE statement was not working when the WHERE clause contained
|
||||
some terms that could be satisfied using indices and other terms that
|
||||
could not. Fixed.</li>
|
||||
}
|
||||
|
||||
chng {2001 Feb 11 (1.0.20)} {
|
||||
<li>Merge development changes into the main trunk. Future work toward
|
||||
using a BTree file structure will use a separate CVS source tree. This
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Run this TCL script to generate HTML for the index.html file.
|
||||
#
|
||||
set rcsid {$Id: index.tcl,v 1.29 2000/09/30 22:46:07 drh Exp $}
|
||||
set rcsid {$Id: index.tcl,v 1.30 2001/02/19 18:24:22 drh Exp $}
|
||||
|
||||
puts {<html>
|
||||
<head><title>SQLite: An SQL Database Library Built Atop GDBM</title></head>
|
||||
@ -61,6 +61,12 @@ all code except for a few areas which are unreachable or which are
|
||||
only reached when <tt>malloc()</tt> fails. The code has been tested
|
||||
for memory leaks and is found to be clean.</p>
|
||||
|
||||
<p><b>Important Note:</b> A bug was found in the processing of UPDATE
|
||||
statements when the WHERE clause contained some terms that could be
|
||||
satisfied using indices and other terms which could not. The problem
|
||||
was fixed in version 1.0.21. Users of prior versions of SQLite should
|
||||
consider upgrading.</p>
|
||||
|
||||
<p>
|
||||
Among the SQL features that SQLite does not currently implement are:</p>
|
||||
|
||||
@ -75,7 +81,8 @@ Among the SQL features that SQLite does not currently implement are:</p>
|
||||
<h2>Important News Flash!</h2>
|
||||
<p>
|
||||
The SQLite file format was changed in an incompatible way on
|
||||
Aug 2, 2000. If you are updated the library and have databases
|
||||
Aug 2, 2000 (prior to version 1.0, when SQLite was still in Beta).
|
||||
If you are updated the library and have databases
|
||||
built using the old version of the library, you should save your
|
||||
old databases into an ASCII file then reimport the
|
||||
database using the new library. For example, if you change the
|
||||
|
Loading…
Reference in New Issue
Block a user