From c79c761f849902c0e83d3ef35d4f160c7c2167d5 Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 1 Jan 2010 18:57:48 +0000 Subject: [PATCH] Add evidence marks associated with autoincrement. FossilOrigin-Name: 0e918c54893c361fb005295847f89aadcbfae35d --- manifest | 20 ++++++++++---------- manifest.uuid | 2 +- src/resolve.c | 4 ++-- src/vdbe.c | 13 +++++++++---- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/manifest b/manifest index 78197292b2..6cf663c70e 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -C Add\scomments\sand\san\sassert()\sto\shelp\sclarify\sthe\soperation\sof\sthe\nsqlite3VdbeList()\sroutine\sused\sto\simplement\sEXPLAIN. -D 2009-12-31T20:35:08 +C Add\sevidence\smarks\sassociated\swith\sautoincrement. +D 2010-01-01T18:57:48 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in c5827ead754ab32b9585487177c93bb00b9497b3 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -163,7 +163,7 @@ F src/pragma.c 6936d7df5e04b9f996f8f320d15e65b6944b2caa F src/prepare.c 170bd953058efe1c46b8ad9020d49cd6f40f0b45 F src/printf.c 644bc7d59df3dc56d6d8b9a510914bfc6b51bc69 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 -F src/resolve.c e8e0866009405b24b81791b8cabc4463fd1d7ebb +F src/resolve.c 69a45df25039eb58e321653914ad670ffe49d486 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 F src/select.c 0109b993c360d649857523abb72919e1794f9b45 F src/shell.c b9fae60b0f2ce306c20fa99e83c75023bf35f15b @@ -212,7 +212,7 @@ F src/update.c c0dc6b75ad28b76b619042d934f337b02acee208 F src/utf.c dad16adcc0c35ef2437dca125a4b07419d361052 F src/util.c ad4f03079ba0fe83590d1cc9197e8e4844e38592 F src/vacuum.c db6415fd0f1be191e16228457a6deb9f232e6ad6 -F src/vdbe.c 5ed06318aac5d57849170a8bf39e807c22c5fedd +F src/vdbe.c e05765736504d9dbcbb3dfa8964932780002ec39 F src/vdbe.h bea1f0cd530775bdb58a340265f3cf3ee920e9b2 F src/vdbeInt.h d7ea821ac7813c9bea0fe87558c35e07b2c7c44d F src/vdbeapi.c fc3787eb2f5487d4cc3444de42d56f2e39d311f5 @@ -786,14 +786,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 97f8a886b6314b044a0522a88f569798fdfb3ef9 -R ec2bfde20add495412a6ede87e046ffd +P e1ccdb93d79a6f7b16f1f59cc3ad78f8d02eae84 +R e8f64ea35cd805e82f52b2a556e34139 U drh -Z 7d63ddb9262e6acf68d6ca4997c73dd9 +Z 394e360eb5d1df957fe55c257efb31a6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD8DBQFLPQr+oxKgR168RlERAvY/AJ9kaCj6kLbG2bTFSo/X9qosbF5uHQCff9FG -yWtwufLA/m9wpfdsngsfSh4= -=0KpD +iD8DBQFLPkWvoxKgR168RlERAtsJAJwKfkre0Bw1zrZ2r7ADRBOPhGeUFwCeKg/n +1gzLrYYIpH++nnmQeRwJHWU= +=j3Nq -----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index d40dcfce5e..1a374056ef 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e1ccdb93d79a6f7b16f1f59cc3ad78f8d02eae84 \ No newline at end of file +0e918c54893c361fb005295847f89aadcbfae35d \ No newline at end of file diff --git a/src/resolve.c b/src/resolve.c index 51f7560a1c..26a6cc03eb 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -253,7 +253,7 @@ static int lookupName( } } if( iCol>=pTab->nCol && sqlite3IsRowid(zCol) ){ - iCol = -1; + iCol = -1; /* IMP: R-44911-55124 */ } if( iColnCol ){ cnt++; @@ -281,7 +281,7 @@ static int lookupName( */ if( cnt==0 && cntTab==1 && sqlite3IsRowid(zCol) ){ cnt = 1; - pExpr->iColumn = -1; + pExpr->iColumn = -1; /* IMP: R-44911-55124 */ pExpr->affinity = SQLITE_AFF_INTEGER; } diff --git a/src/vdbe.c b/src/vdbe.c index 10401a47a6..aef20c5926 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -3663,7 +3663,7 @@ case OP_NewRowid: { /* out2-prerelease */ goto abort_due_to_error; } if( res ){ - v = 1; + v = 1; /* IMP: R-61914-48074 */ }else{ assert( sqlite3BtreeCursorIsValid(pC->pCursor) ); rc = sqlite3BtreeKeySize(pC->pCursor, &v); @@ -3671,7 +3671,7 @@ case OP_NewRowid: { /* out2-prerelease */ if( v==MAX_ROWID ){ pC->useRandomRowid = 1; }else{ - v++; + v++; /* IMP: R-29538-34987 */ } } } @@ -3695,7 +3695,7 @@ case OP_NewRowid: { /* out2-prerelease */ sqlite3VdbeMemIntegerify(pMem); assert( (pMem->flags & MEM_Int)!=0 ); /* mem(P3) holds an integer */ if( pMem->u.i==MAX_ROWID || pC->useRandomRowid ){ - rc = SQLITE_FULL; + rc = SQLITE_FULL; /* IMP: R-12275-61338 */ goto abort_due_to_error; } if( vu.i+1 ){ @@ -3708,6 +3708,11 @@ case OP_NewRowid: { /* out2-prerelease */ sqlite3BtreeSetCachedRowid(pC->pCursor, vuseRandomRowid ){ + /* IMPLEMENTATION-OF: R-48598-02938 If the largest ROWID is equal to the + ** largest possible integer (9223372036854775807) then the database + ** engine starts picking candidate ROWIDs at random until it finds one + ** that is not previously used. + */ assert( pOp->p3==0 ); /* We cannot be in random rowid mode if this is ** an AUTOINCREMENT table. */ v = db->lastRowid; @@ -3723,7 +3728,7 @@ case OP_NewRowid: { /* out2-prerelease */ cnt++; }while( cnt<100 && rc==SQLITE_OK && res==0 ); if( rc==SQLITE_OK && res==0 ){ - rc = SQLITE_FULL; + rc = SQLITE_FULL; /* IMP: R-38219-53002 */ goto abort_due_to_error; } }