From 96fc5fe6a5f6756458b510f794dd7e78b917d76a Mon Sep 17 00:00:00 2001 From: danielk1977 Date: Thu, 13 May 2004 11:34:16 +0000 Subject: [PATCH] Various minor fixes and updates to make more test cases pass. (CVS 1370) FossilOrigin-Name: dbe8385ecf1df8bf0b1baf5e811ec5a1de5c4c42 --- manifest | 34 ++++++++++++------------- manifest.uuid | 2 +- src/btree.c | 30 +++++++++++----------- src/func.c | 4 +-- src/test1.c | 12 ++++----- src/vdbe.c | 16 +++++++++--- test/attach2.test | 10 ++++---- test/btree5.test | 5 ++-- test/btree6.test | 3 ++- test/expr.test | 5 ++-- test/pragma.test | 4 +-- test/quick.test | 63 +++++++++++++++++++++++------------------------ test/rowid.test | 5 +++- test/version.test | 4 +-- 14 files changed, 107 insertions(+), 90 deletions(-) diff --git a/manifest b/manifest index 7d74bf5bd7..5b09567669 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Commit\svdbeaux.c,\swhich\sshould\sof\sgone\sin\swith\sthe\sprevious\scommit.\s(CVS\s1369) -D 2004-05-13T05:20:26 +C Various\sminor\sfixes\sand\supdates\sto\smake\smore\stest\scases\spass.\s(CVS\s1370) +D 2004-05-13T11:34:16 F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -23,7 +23,7 @@ F sqlite.def fc4f5734786fe4743cfe2aa98eb2da4b089edb5f F sqlite.pc.in 30552343140c53304c2a658c080fbe810cd09ca2 F src/attach.c c315c58cb16fd6e913b3bfa6412aedecb4567fa5 F src/auth.c 5c2f0bea4729c98c2be3b69d6b466fc51448fe79 -F src/btree.c 35fd97038d146f4880a0349b2fe7a4f6ce466eea +F src/btree.c e1b44c72982a799efd6ea62d40da523bf6a49029 F src/btree.h 6f51ad0ffebfba71295fcacdbe86007512200050 F src/btree_rb.c 9d7973e266ee6f9c61ce592f68742ce9cd5b10e5 F src/build.c f25e4ac9f102efd70188bc09a459c2b461fe2135 @@ -32,7 +32,7 @@ F src/date.c 1564caa119511a1bb23dd0b1530ad38ed8c3349b F src/delete.c 30c8c4375e75e811c3668abf3f78970fe549f375 F src/encode.c a876af473d1d636faa3dca51c7571f2e007eea37 F src/expr.c a3aed7057bafb3a01e8af98a5f74a102621b7a91 -F src/func.c 6cf6501f092b41c8cd9368b09c287016c0576438 +F src/func.c 4b3147e841a4db9bf41768d79aaa46e6655b239a F src/hash.c 440c2f8cb373ee1b4e13a0988489c7cd95d55b6f F src/hash.h 762d95f1e567664d1eafc1687de755626be962fb F src/insert.c 1e63d2774c4d893363e0c072f19d4c92a4ab982d @@ -52,7 +52,7 @@ F src/sqlite.h.in 799c5e726296ec7bc20e6407cdf4df0e0bc00c0c F src/sqliteInt.h 168f441f72f5d1ab476ea85ac544712fe57f31c0 F src/table.c af14284fa36c8d41f6829e3f2819dce07d3e2de2 F src/tclsqlite.c fbf0fac73624ae246551a6c671f1de0235b5faa1 -F src/test1.c ba4c25985916a82cfa375145a90e2c8d4b0a6a20 +F src/test1.c 12ef76b8aaba4408422f21f269256b630d4dd627 F src/test2.c 6195a1ca2c8d0d2d93644e86da3289b403486872 F src/test3.c 1b3ac2199169fb331685c7bef15ad54721db278b F src/test4.c b3fab9aea7a8940a8a7386ce1c7e2157b09bd296 @@ -63,14 +63,14 @@ F src/update.c 6ca82fc4a0fb4d7f134e961921c906f6f3c8bc74 F src/utf.c fc799748d43fe1982d157b871e3e420a19c85d4f F src/util.c 778a8cd03ad6e52778602d20a3132c7d2d1b0a0c F src/vacuum.c c134702e023db8778e6be59ac0ea7b02315b5476 -F src/vdbe.c 773fb49293f0412aa65e2bcbced40bd64464529e +F src/vdbe.c 7b81b1d62480d211325ed0eb283e26dd770f81c3 F src/vdbe.h 94457ca73bae972dc61bca33a4dccc2e6e14e2f8 F src/vdbeInt.h 66904cfb0b004de8441e47ce00da8c7d4c498c76 F src/vdbeaux.c 8bf71f7ba91a208c5e0a8bcf5da03889bc858041 F src/where.c 487e55b1f64c8fbf0f46a9a90c2247fc45ae6a9a F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242 F test/attach.test cb9b884344e6cfa5e165965d5b1adea679a24c83 -F test/attach2.test d9f55b94af9b4cdb175364b1590e98bdacc2f257 +F test/attach2.test 7c388dee63a4c1997695c3d41957f32ce784ac56 F test/auth.test 5c4d95cdaf539c0c236e20ce1f71a93e7dde9185 F test/bigfile.test ea904b853ce2d703b16c5ce90e2b54951bc1ae81 F test/bigrow.test 8ab252dba108f12ad64e337b0f2ff31a807ac578 @@ -78,15 +78,15 @@ F test/bind.test 56a57043b42c4664ca705f6050e56717a8a6699a F test/btree.test ed5781db83b6c1de02e62781d44915a9abe3450a F test/btree2.test aa4a6d05b1ea90b1acaf83ba89039dd302a88635 F test/btree4.test 3797b4305694c7af6828675b0f4b1424b8ca30e4 -F test/btree5.test 13763ea0aa768dfbcef02d93b0711601e03f84b4 -F test/btree6.test e33221c6fb10b26c0ca352c85574b8d5bc88cdc1 +F test/btree5.test e0852973746da8d086a8e1d1b3607c147a84b5bb +F test/btree6.test b7524d7165faff496a767dfa2c78a1ae4d8ba09a F test/capi2.test ec96e0e235d87b53cbaef3d8e3e0f8ccf32c71ca F test/conflict.test 0911bb2f079046914a6e9c3341b36658c4e2103e F test/copy.test f07ea8d60878da7a67416ab62f78e9706b9d3c45 F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2 F test/date.test aed5030482ebc02bd8d386c6c86a29f694ab068d F test/delete.test 92256384f1801760180ded129f7427884cf28886 -F test/expr.test ad985242e140f87eeef329d98257b8369a2066dc +F test/expr.test 8b62f3fcac64fbd5c3d43d7a7984245743dcbe65 F test/fkey1.test d65c824459916249bee501532d6154ddab0b5db7 F test/format3.test 149cc166c97923fa60def047e90dd3fb32bba916 F test/func.test 000515779001ac6899eec4b54e65c6e2501279d4 @@ -117,12 +117,12 @@ F test/notnull.test 7a08117a71e74b0321aaa937dbeb41a09d6eb1d0 F test/null.test c14d0f4739f21e929b8115b72bf0c765b6bb1721 F test/pager.test 548968643d91c1c43a3a3eb1a232e9ca87b4069e F test/pager2.test 7ff175a28484fd324df9315dfe35f6fb159910ec -F test/pragma.test 24a3f7a697b45cb90d664ebce5566bec7ac41571 +F test/pragma.test 06c4e51998dd68115ef7a60abeeff7accf198f83 F test/printf.test 46b3d07d59d871d0831b4a657f6dfcafe0574850 F test/progress.test 701b6115c2613128ececdfe1398a1bd0e1a4cfb3 x -F test/quick.test 25df45ec1f8551279358dc0f0a2388ab59e06a30 +F test/quick.test 7fca1ac81876aca257c83138f3c1226597f26a14 F test/quote.test 08f23385c685d3dc7914ec760d492cacea7f6e3d -F test/rowid.test 77f7e8c7ca626a15ff91a536595b695cfce7c845 +F test/rowid.test 863e6e75878cccf03d166fe52023f20e09508683 F test/select1.test 3bfcccd2eadcddbb07f1f5da6550aee8484ea4fb F test/select2.test 2115d8f7a34fcb5c0cbe8491f441830bc44d3398 F test/select3.test 445a1a3dde4e2fd32541b311f55da5e2f8079d76 @@ -148,7 +148,7 @@ F test/types.test 53e3d97c33651afad7bc8bd4cf71b97b473b19ad F test/unique.test 0e38d4cc7affeef2527720d1dafd1f6870f02f2b F test/update.test b29bd9061a1150426dab6959806fcc73a41b1217 F test/vacuum.test a2a44544df719666efb51afbfeb6062fd59a672a -F test/version.test 92adee5d98cf6e3eb0d1cf5186952e8114931bf6 +F test/version.test 2ba212ba06380e65e476bdf2fcd390e8b05af5a0 F test/view.test 1ee12c6f8f4791a2c0655120d5562a49400cfe53 F test/where.test cb3a2ed062ce4b5f08aff2d08027c6a46d68c47b F tool/diffdb.c 7524b1b5df217c20cd0431f6789851a4e0cb191b @@ -191,7 +191,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P 9f2b6d9d3a07e25fcdb7e8290da7a182a65c37b2 -R f11624c39f06ceae0abda7ba6de7cde2 +P 5378a6404058f5e9d3e91269ab27afef9874b43a +R 5cea4217b12b8586931a8ae3fe1c0f5a U danielk1977 -Z 1145b683d60660fe323388d21c0508f8 +Z 75ee753bf7dba66bad05e1efee995e93 diff --git a/manifest.uuid b/manifest.uuid index 5473327a4a..ea9e0c6bcb 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5378a6404058f5e9d3e91269ab27afef9874b43a \ No newline at end of file +dbe8385ecf1df8bf0b1baf5e811ec5a1de5c4c42 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 678c900795..79a0079c21 100644 --- a/src/btree.c +++ b/src/btree.c @@ -9,7 +9,7 @@ ** May you share freely, never taking more than you give. ** ************************************************************************* -** $Id: btree.c,v 1.131 2004/05/13 01:12:57 drh Exp $ +** $Id: btree.c,v 1.132 2004/05/13 11:34:16 danielk1977 Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** For a detailed discussion of BTrees, refer to @@ -1523,22 +1523,24 @@ int sqlite3BtreeDataSize(BtCursor *pCur, u32 *pSize){ unsigned char *cell; if( !pCur->isValid ){ - return pCur->status ? pCur->status : SQLITE_INTERNAL; - } - pPage = pCur->pPage; - assert( pPage!=0 ); - assert( pPage->isInit ); - pageIntegrity(pPage); - if( !pPage->hasData ){ + /* Not pointing at a valid entry - set *pSize to 0. */ *pSize = 0; }else{ - assert( pCur->idx>=0 && pCur->idxnCell ); - cell = pPage->aCell[pCur->idx]; - cell += 2; /* Skip the offset to the next cell */ - if( !pPage->leaf ){ - cell += 4; /* Skip the child pointer */ + pPage = pCur->pPage; + assert( pPage!=0 ); + assert( pPage->isInit ); + pageIntegrity(pPage); + if( !pPage->hasData ){ + *pSize = 0; + }else{ + assert( pCur->idx>=0 && pCur->idxnCell ); + cell = pPage->aCell[pCur->idx]; + cell += 2; /* Skip the offset to the next cell */ + if( !pPage->leaf ){ + cell += 4; /* Skip the child pointer */ + } + getVarint32(cell, pSize); } - getVarint32(cell, pSize); } return SQLITE_OK; } diff --git a/src/func.c b/src/func.c index c93dd7d290..5d95ca0cd3 100644 --- a/src/func.c +++ b/src/func.c @@ -16,7 +16,7 @@ ** sqliteRegisterBuildinFunctions() found at the bottom of the file. ** All other code has file scope. ** -** $Id: func.c,v 1.45 2004/05/10 10:34:38 danielk1977 Exp $ +** $Id: func.c,v 1.46 2004/05/13 11:34:16 danielk1977 Exp $ */ #include #include @@ -586,7 +586,7 @@ void sqlite3RegisterBuiltinFunctions(sqlite *db){ { "like", 2, SQLITE_NUMERIC, 0, likeFunc }, { "glob", 2, SQLITE_NUMERIC, 0, globFunc }, { "nullif", 2, SQLITE_ARGS, 0, nullifFunc }, - { "sqlite3_version",0,SQLITE_TEXT, 0, versionFunc}, + { "sqlite_version",0,SQLITE_TEXT, 0, versionFunc}, { "quote", 1, SQLITE_ARGS, 0, quoteFunc }, { "last_insert_rowid", 0, SQLITE_NUMERIC, 1, last_insert_rowid }, { "change_count", 0, SQLITE_NUMERIC, 1, change_count }, diff --git a/src/test1.c b/src/test1.c index 22f4587f86..1fe133d764 100644 --- a/src/test1.c +++ b/src/test1.c @@ -13,7 +13,7 @@ ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** -** $Id: test1.c,v 1.39 2004/05/11 06:17:22 danielk1977 Exp $ +** $Id: test1.c,v 1.40 2004/05/13 11:34:16 danielk1977 Exp $ */ #include "sqliteInt.h" #include "tcl.h" @@ -998,11 +998,11 @@ int Sqlitetest1_Init(Tcl_Interp *interp){ { "sqlite_malloc_fail", (Tcl_CmdProc*)sqlite_malloc_fail }, { "sqlite_malloc_stat", (Tcl_CmdProc*)sqlite_malloc_stat }, #endif - { "sqlite3_compile", (Tcl_CmdProc*)test_compile }, - { "sqlite3_step", (Tcl_CmdProc*)test_step }, - { "sqlite3_finalize", (Tcl_CmdProc*)test_finalize }, - { "sqlite3_bind", (Tcl_CmdProc*)test_bind }, - { "sqlite3_reset", (Tcl_CmdProc*)test_reset }, + { "sqlite_compile", (Tcl_CmdProc*)test_compile }, + { "sqlite_step", (Tcl_CmdProc*)test_step }, + { "sqlite_finalize", (Tcl_CmdProc*)test_finalize }, + { "sqlite_bind", (Tcl_CmdProc*)test_bind }, + { "sqlite_reset", (Tcl_CmdProc*)test_reset }, { "breakpoint", (Tcl_CmdProc*)test_breakpoint }, }; int i; diff --git a/src/vdbe.c b/src/vdbe.c index b0687ce717..40de9e2dea 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -43,7 +43,7 @@ ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** -** $Id: vdbe.c,v 1.285 2004/05/13 05:16:16 danielk1977 Exp $ +** $Id: vdbe.c,v 1.286 2004/05/13 11:34:16 danielk1977 Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -1865,7 +1865,7 @@ case OP_Column: { if( pC->nullRow ){ payloadSize = 0; }else if( pC->keyAsData ){ - u64 payloadSize64; + i64 payloadSize64; sqlite3BtreeKeySize(pCrsr, &payloadSize64); payloadSize = payloadSize64; }else{ @@ -2072,6 +2072,11 @@ case OP_MakeRecord: { nBytes += sqlite3VarintLen(serial_type); } + if( nBytes>MAX_BYTES_PER_ROW ){ + rc = SQLITE_TOOBIG; + goto abort_due_to_error; + } + /* Allocate space for the new record. */ zNewRecord = sqliteMalloc(nBytes); if( !zNewRecord ){ @@ -2328,6 +2333,11 @@ case OP_MakeIdxKey: { nByte += sqlite3VarintLen(rowid); nByte++; } + + if( nByte>MAX_BYTES_PER_ROW ){ + rc = SQLITE_TOOBIG; + goto abort_due_to_error; + } /* Allocate space for the new key */ zKey = (char *)sqliteMalloc(nByte); @@ -2832,7 +2842,7 @@ case OP_MoveTo: { pC->nullRow = 0; if( pC->intKey ){ i64 iKey; - assert( pTos->flags & MEM_Int ); + Integerify(pTos); iKey = intToKey(pTos->i); if( pOp->p2==0 && pOp->opcode==OP_MoveTo ){ pC->movetoTarget = iKey; diff --git a/test/attach2.test b/test/attach2.test index 4105566b89..38b58cc44f 100644 --- a/test/attach2.test +++ b/test/attach2.test @@ -12,7 +12,7 @@ # focus of this script is testing the ATTACH and DETACH commands # and related functionality. # -# $Id: attach2.test,v 1.6 2004/05/11 10:04:49 drh Exp $ +# $Id: attach2.test,v 1.7 2004/05/13 11:34:17 danielk1977 Exp $ # @@ -124,15 +124,15 @@ do_test attach2-2.12 { do_test attach2-3.1 { db close set DB [sqlite db test.db] - set rc [catch {sqlite3_compile $DB "ATTACH 'test2.db' AS t2" TAIL} VM] + set rc [catch {sqlite_compile $DB "ATTACH 'test2.db' AS t2" TAIL} VM] if {$rc} {lappend rc $VM} - sqlite3_finalize $VM + sqlite_finalize $VM set rc } {0} do_test attach2-3.2 { - set rc [catch {sqlite3_compile $DB "DETACH t2" TAIL} VM] + set rc [catch {sqlite_compile $DB "DETACH t2" TAIL} VM] if {$rc} {lappend rc $VM} - sqlite3_finalize $VM + sqlite_finalize $VM set rc } {0} diff --git a/test/btree5.test b/test/btree5.test index 8a99a1718f..e14b0f6440 100644 --- a/test/btree5.test +++ b/test/btree5.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this script is btree database backend # -# $Id: btree5.test,v 1.3 2004/05/12 19:18:17 drh Exp $ +# $Id: btree5.test,v 1.4 2004/05/13 11:34:17 danielk1977 Exp $ set testdir [file dirname $argv0] @@ -283,8 +283,9 @@ for {set i 1} {$i<=100} {incr i} { incr end 100 } + btree_close_cursor $c2 btree_commit $b1 - +btree_close $b1 finish_test diff --git a/test/btree6.test b/test/btree6.test index 778f608a37..2591c91477 100644 --- a/test/btree6.test +++ b/test/btree6.test @@ -13,7 +13,7 @@ # the B+tree tables. B+trees store all data on the leaves rather # that storing data with keys on interior nodes. # -# $Id: btree6.test,v 1.2 2004/05/12 21:11:27 drh Exp $ +# $Id: btree6.test,v 1.3 2004/05/13 11:34:17 danielk1977 Exp $ set testdir [file dirname $argv0] @@ -123,5 +123,6 @@ for {set i 1} {$i<=100} {incr i} { btree_close_cursor $cur btree_commit $b1 +btree_close $b1 finish_test diff --git a/test/expr.test b/test/expr.test index be91a74813..e0aa1a2b4d 100644 --- a/test/expr.test +++ b/test/expr.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is testing expressions. # -# $Id: expr.test,v 1.31 2004/03/03 01:51:25 drh Exp $ +# $Id: expr.test,v 1.32 2004/05/13 11:34:17 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -29,7 +29,8 @@ proc test_expr {name settings expr result} { test_expr expr-1.1 {i1=10, i2=20} {i1+i2} 30 test_expr expr-1.2 {i1=10, i2=20} {i1-i2} -10 test_expr expr-1.3 {i1=10, i2=20} {i1*i2} 200 -test_expr expr-1.4 {i1=10, i2=20} {i1/i2} 0.5 +# update for sqlite v3: Change 0.5 to 0 in expr1.4 due to manifest types. +test_expr expr-1.4 {i1=10, i2=20} {i1/i2} 0 test_expr expr-1.5 {i1=10, i2=20} {i2/i1} 2 test_expr expr-1.6 {i1=10, i2=20} {i2