- C Disable\san\sassert\sthat\sis\ssometimes\sgenerated\sspuriously.
- D 2014-07-29T21:44:13.328
-C Ensure\sthat\sthe\scorrect\snumber\sof\scolumns\sin\sa\sUNIQUE\sindex\sare\schecked\sfor\nuniqueness,\sregardless\sof\swhether\sor\snot\sthe\soriginal\stable\shas\sa\sROWID\sor\nif\sthe\scolumns\sare\sNOT\sNULL,\setc.\s\sTicket\s[9a6daf340df99ba93c].
-D 2014-07-30T13:56:48.415
++C Merge\srecent\strunk\schanges,\sand\sespecially\sthe\sfix\sfor\sthe\sCREATE\sUNIQUE\sINDEX\nproblem\sof\sticket\s[9a6daf340df99ba9].
++D 2014-07-30T14:44:24.940
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
-F Makefile.in 5eb79e334a5de69c87740edd56af6527dd219308
+F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
-F Makefile.msc 5b04e657cf08a9ac7fc47d876c5c8be962c47d6b
+F Makefile.msc e31dee24038965fb6269d6d61073fd6b7e331dec
F Makefile.vxworks 034289efa9d591b04b1a73598623119c306cbba0
F README.md 64f270c43c38c46de749e419c22f0ae2f4499fe8
F VERSION 1c877615a9db323e3cd301e3d57d853f9d5c4a07
F src/backup.c a729e63cf5cd1829507cb7b8e89f99b95141bb53
F src/bitvec.c 19a4ba637bd85f8f63fc8c9bae5ade9fb05ec1cb
F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7
-F src/btree.c b5531339cd826af46b9621e4a9323971a9380e12
+F src/btree.c dff8e7789730e835b66d81f9eb68de2352845012
F src/btree.h 4245a349bfe09611d7ff887dbc3a80cee8b7955a
F src/btreeInt.h cf180d86b2e9e418f638d65baa425c4c69c0e0e3
- F src/build.c af833cdcba64a465eeba5f2d0c9fc012a9f6c31d
-F src/build.c 7ba21d8f0f5f1e8b5a0ed21aab9be2b39d1af516
++F src/build.c f6e49e1b32fe1aed6971da5712131d9272d7d81c
F src/callback.c 174e3c8656bc29f91d710ab61550d16eea34be98
F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
F src/ctime.c 0231df905e2c4abba4483ee18ffc05adc321df2a
F src/legacy.c 0df0b1550b9cc1f58229644735e317ac89131f12
F src/lempar.c cdf0a000315332fc9b50b62f3b5e22e080a0952b
F src/loadext.c 867c7b330b740c6c917af9956b13b81d0a048303
- F src/main.c e2fded3600437acd3faae4182648e846ccdc3c7c
-F src/main.c bbf7f993843fc3fc496089747f6849272d77e824
++F src/main.c 42ba5977d1c4324620b2ef2bc05b7bb28a2331e4
F src/malloc.c 0203ebce9152c6a0e5de520140b8ba65187350be
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c c0c990fcaddff810ea277b4fb5d9138603dd5d4b
F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
F src/os_unix.c a7baf1b30f3c58ba20b813e01aab23b18ae44f85
- F src/os_win.c 5f8c5568cc749d6ab44006124e7701f463559223
-F src/os_win.c c29e3a80b47ebdbabd61fc3d4015e52d2654d8c5
++F src/os_win.c c4d89c7e38a2ac1c6c90bf084131a44ed682790b
F src/os_win.h 057344a6720b4c8405d9bd98f58cb37a6ee46c25
F src/pager.c f6bb1fa6cdf2062f2d8aec3e64db302bca519ab8
F src/pager.h ffd5607f7b3e4590b415b007a4382f693334d428
F src/utf.c a0314e637768a030e6e84a957d0c4f6ba910cc05
F src/util.c 3076bdd51cdbf60a6e2e57fada745be37133c73e
F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
- F src/vdbe.c c28f377d29cfa4db713581fc3a134642e38d9fcf
-F src/vdbe.c f87f77b0049cbef1fa68b331c3551d82b4d9fba4
++F src/vdbe.c e27749e6a5f65b3ff3388eab1472c0eaf6823b43
F src/vdbe.h c63fad052c9e7388d551e556e119c0bcf6bebdf8
-F src/vdbeInt.h f5513f2b5ac1e2c5128996c7ea23add256a301df
+F src/vdbeInt.h 8870adf012235708f125f8cd1c988f487dc3eb6f
F src/vdbeapi.c 24e40422382beb774daab11fe9fe9d37e8a04949
-F src/vdbeaux.c ac063f36c929f88bf6cecdbcc413000e272265bb
+F src/vdbeaux.c 3f1d2baa4a8cbdad33cb255a5f4fd1af7a414683
F src/vdbeblob.c 9205ce9d3b064d9600f8418a897fc88b5687d9ac
F src/vdbemem.c d90a1e8acf8b63dc9d14cbbea12bfec6cec31394
- F src/vdbesort.c 2198e33de4c2c32bdb3fb4f06dbe2ae90a0fce33
-F src/vdbesort.c f7f5563bf7d4695ca8f3203f3bf9de96d04ed0b3
++F src/vdbesort.c cab84b480d5c616e830d9b20c8903e42de3b60b3
F src/vdbetrace.c 6f52bc0c51e144b7efdcfb2a8f771167a8816767
F src/vtab.c 21b932841e51ebd7d075e2d0ad1415dce8d2d5fd
F src/wal.c 264df50a1b33124130b23180ded2e2c5663c652a
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
- P 3144a16f91364b455e54e6030714e1c12ab0bdb7
- R 9e96844dee61c8b0e69a9d02798bc497
- U mistachkin
- Z d96e323c9f24218fc7129fc10b94c004
-P ca9868cdae19045dc522490b34dee0f14d928ebe
-R aa3d0aadabff4023861d0c947293977e
++P bd9ee0ea69181526cfc3cadac33a5ec5190112b0 6b785e92f279cb65746834d5cd25594fd3333342
++R 5abc11219614f612d7ef9f82b784bc0c
+ U drh
-Z 0e144877cde1d96e38c3dc4f9894f6d4
++Z f20a2d1678a8f4c3f64fec3d49fad416
int sqlite3VdbeSorterCompare(
const VdbeCursor *pCsr, /* Sorter cursor */
Mem *pVal, /* Value to compare to current sorter key */
- int nIgnore, /* Ignore this many fields at the end */
- int nKeyCol, /* Only compare this many fields */
++ int nKeyCol, /* Compare this many columns */
int *pRes /* OUT: Result of comparison */
){
VdbeSorter *pSorter = pCsr->pSorter;
+ UnpackedRecord *r2 = pSorter->pUnpacked;
+ KeyInfo *pKeyInfo = pCsr->pKeyInfo;
+ int i;
void *pKey; int nKey; /* Sorter key to compare pVal with */
- r2->nField = pKeyInfo->nField-nIgnore;
+ if( r2==0 ){
+ char *p;
+ r2 = pSorter->pUnpacked = sqlite3VdbeAllocUnpackedRecord(pKeyInfo,0,0,&p);
+ assert( pSorter->pUnpacked==(UnpackedRecord*)p );
+ if( r2==0 ) return SQLITE_NOMEM;
- assert( r2->nField>=pKeyInfo->nField-nIgnore );
++ r2->nField = nKeyCol;
+ }
++ assert( r2->nField==nKeyCol );
+
pKey = vdbeSorterRowkey(pSorter, &nKey);
- vdbeSorterCompare(pCsr, nKeyCol, pVal->z, pVal->n, pKey, nKey, pRes);
+ sqlite3VdbeRecordUnpack(pKeyInfo, nKey, pKey, r2);
- for(i=0; i<r2->nField; i++){
++ for(i=0; i<nKeyCol; i++){
+ if( r2->aMem[i].flags & MEM_Null ){
+ *pRes = -1;
+ return SQLITE_OK;
+ }
+ }
+
+ *pRes = sqlite3VdbeRecordCompare(pVal->n, pVal->z, r2, 0);
return SQLITE_OK;
}