]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge recent trunk changes, and especially the fix for the CREATE UNIQUE INDEX
authordrh <drh@noemail.net>
Wed, 30 Jul 2014 14:44:24 +0000 (14:44 +0000)
committerdrh <drh@noemail.net>
Wed, 30 Jul 2014 14:44:24 +0000 (14:44 +0000)
problem of ticket [9a6daf340df99ba9].

FossilOrigin-Name: 5b50a8380b2b678c1646ff303e3696efc1d7d92c

1  2 
manifest
manifest.uuid
src/build.c
src/main.c
src/os_win.c
src/vdbe.c
src/vdbesort.c

diff --cc manifest
index 10548317003ec033721bee1e42d22d0025d54e84,551a1332b7040f3dd7ecb263823a4a5717639693..7a190a12d753fefb8a879e6755204c2575ae2c56
+++ b/manifest
@@@ -1,9 -1,9 +1,9 @@@
- 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
@@@ -167,10 -167,10 +167,10 @@@ F src/auth.c 523da7fb4979469955d822ff92
  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
@@@ -189,7 -189,7 +189,7 @@@ F src/journal.c b4124532212b6952f42eb2c
  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
@@@ -208,7 -208,7 +208,7 @@@ F src/os.h 60d419395e32a8029fa380a80a3d
  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
@@@ -284,14 -283,14 +284,14 @@@ F src/update.c 01564b3c430f6c7b0a35afaf
  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
@@@ -1189,7 -1185,7 +1190,7 @@@ F tool/vdbe_profile.tcl 67746953071a9f8
  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
diff --cc manifest.uuid
index 157c4b09873f1ae3465931c50d4873e9a3cc47be,194b99221e4a89d359d8e3cbfd372bc6793246ef..96ada87e5a1477f6c8fea1d9ecb1ff9955f31121
@@@ -1,1 -1,1 +1,1 @@@
- bd9ee0ea69181526cfc3cadac33a5ec5190112b0
 -6b785e92f279cb65746834d5cd25594fd3333342
++5b50a8380b2b678c1646ff303e3696efc1d7d92c
diff --cc src/build.c
Simple merge
diff --cc src/main.c
Simple merge
diff --cc src/os_win.c
Simple merge
diff --cc src/vdbe.c
index 8251ca9aecd5f2aa82655ca6b4e618248485de33,52f0f3aa749517c4d56b750515926332ec2d4d1f..e56f0366d825885b3370b322a2e658997e81182e
@@@ -4316,9 -4294,8 +4316,9 @@@ case OP_SorterCompare: 
    assert( isSorter(pC) );
    assert( pOp->p4type==P4_INT32 );
    pIn3 = &aMem[pOp->p3];
-   nIgnore = pOp->p4.i;
+   nKeyCol = pOp->p4.i;
 +  res = 0;
-   rc = sqlite3VdbeSorterCompare(pC, pIn3, nIgnore, &res);
+   rc = sqlite3VdbeSorterCompare(pC, pIn3, nKeyCol, &res);
    VdbeBranchTaken(res!=0,2);
    if( res ){
      pc = pOp->p2-1;
diff --cc src/vdbesort.c
index d4a2cc757e312cc2402e2cd578c57c5a0af35f7a,6a5855f2efef1efa67ce9e9756f601c48bc1ede1..9110bd67b042abd9dbac0693cd371764ef43cf94
@@@ -2455,33 -1083,13 +2455,33 @@@ int sqlite3VdbeSorterRowkey(const VdbeC
  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;
  }