]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Remove code from vdbesort.c that was made unreachable by the recent
authordrh <drh@noemail.net>
Wed, 14 Sep 2011 13:23:21 +0000 (13:23 +0000)
committerdrh <drh@noemail.net>
Wed, 14 Sep 2011 13:23:21 +0000 (13:23 +0000)
sqlite3VdbeRecordUnpack() optimizations.

FossilOrigin-Name: 607aba6cd7020973200fa376cf8df55360165266

manifest
manifest.uuid
src/vdbesort.c

index 3d19495e11bfbc9c04ea7ce3d81c06bf094a0e00..dbc14153318443092c0c9c498cb3315db2f58c1c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Allocate\sthe\scorrect\ssize\sfor\sthe\soutput\sbuffer\sin\sfts3DoclistOrMerge().\sFix\sfor\s[56be976859].
-D 2011-09-13T19:08:43.953
+C Remove\scode\sfrom\svdbesort.c\sthat\swas\smade\sunreachable\sby\sthe\srecent\nsqlite3VdbeRecordUnpack()\soptimizations.
+D 2011-09-14T13:23:21.875
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in d314143fa6be24828021d3f583ad37d9afdce505
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -245,7 +245,7 @@ F src/vdbeapi.c 11dc47987abacb76ad016dcf5abc0dc422482a98
 F src/vdbeaux.c 079d37d4afac8359b2bbbf4af9876be04cc857b8
 F src/vdbeblob.c f024f0bf420f36b070143c32b15cc7287341ffd3
 F src/vdbemem.c 5e6effb96dd53d233361cbfaa3f0a43b9af689e9
-F src/vdbesort.c 667bc65254a9ebaf7bc466ebb7e58884933e351f
+F src/vdbesort.c df1953a4929c4e82603d67ee7e5f6703f8a9135e
 F src/vdbetrace.c 5d0dc3d5fd54878cc8d6d28eb41deb8d5885b114
 F src/vtab.c 901791a47318c0562cd0c676a2c6ff1bc530e582
 F src/wal.c 3154756177d6219e233d84291d5b05f4e06ff5e9
@@ -961,7 +961,7 @@ F tool/symbols.sh caaf6ccc7300fd43353318b44524853e222557d5
 F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings.sh b7fdb2cc525f5ef4fa43c80e771636dd3690f9d2
-P a9db247b752bcda0131b8f01c6f0182f3101d154
-R d155e7b5d9350f72a6fc8ad44a77ee3c
-U dan
-Z 8c4428f39d0d1ba0e8478a40bc187eaf
+P 07788c0f7f3740c1c280f6ce4dc68401c30bae6e
+R 10acdf81d291f1b22f3bc7924f505649
+U drh
+Z eeb8c9d9c6395f39be328ccc4c54c823
index 63b21a10192ee0f95cdea6b9cbc1266eebc39d6d..aa441de2acee312fa2d2b1001aad74a7663f2cc8 100644 (file)
@@ -1 +1 @@
-07788c0f7f3740c1c280f6ce4dc68401c30bae6e
\ No newline at end of file
+607aba6cd7020973200fa376cf8df55360165266
\ No newline at end of file
index ead2f453e4370e865bbd6acb5b7bbe69d64b7721..0a8ec81220414075471da1b5c80a8f4aba40b991 100644 (file)
@@ -298,7 +298,7 @@ static int vdbeSorterIterInit(
 ** If pKey2 is passed a NULL pointer, then it is assumed that the pCsr->aSpace
 ** has been allocated and contains an unpacked record that is used as key2.
 */
-static int vdbeSorterCompare(
+static void vdbeSorterCompare(
   VdbeCursor *pCsr,               /* Cursor object (for pKeyInfo) */
   int bOmitRowid,                 /* Ignore rowid field at end of keys */
   void *pKey1, int nKey1,         /* Left side of comparison */
@@ -320,14 +320,13 @@ static int vdbeSorterCompare(
     for(i=0; i<r2->nField; i++){
       if( r2->aMem[i].flags & MEM_Null ){
         *pRes = -1;
-        return SQLITE_OK;
+        return;
       }
     }
     r2->flags |= UNPACKED_PREFIX_MATCH;
   }
 
   *pRes = sqlite3VdbeRecordCompare(nKey1, pKey1, r2);
-  return SQLITE_OK;
 }
 
 /*
@@ -362,15 +361,10 @@ static int vdbeSorterDoCompare(VdbeCursor *pCsr, int iOut){
     iRes = i1;
   }else{
     int res;
-    int rc;
     assert( pCsr->pSorter->pUnpacked!=0 );  /* allocated in vdbeSorterMerge() */
-    rc = vdbeSorterCompare(
+    vdbeSorterCompare(
         pCsr, 0, p1->aKey, p1->nKey, p2->aKey, p2->nKey, &res
     );
-    /* The vdbeSorterCompare() call cannot fail since pCsr->pSorter->pUnpacked
-    ** has already been allocated. */
-    assert( rc==SQLITE_OK );
-
     if( res<=0 ){
       iRes = i1;
     }else{
@@ -462,32 +456,23 @@ static int vdbeSorterOpenTempFile(sqlite3 *db, sqlite3_file **ppFile){
 }
 
 /*
-** Attemp to merge the two sorted lists p1 and p2 into a single list. If no
-** error occurs set *ppOut to the head of the new list and return SQLITE_OK.
+** Merge the two sorted lists p1 and p2 into a single list.
+** Set *ppOut to the head of the new list.
 */
-static int vdbeSorterMerge(
+static void vdbeSorterMerge(
   sqlite3 *db,                    /* Database handle */
   VdbeCursor *pCsr,               /* For pKeyInfo */
   SorterRecord *p1,               /* First list to merge */
   SorterRecord *p2,               /* Second list to merge */
   SorterRecord **ppOut            /* OUT: Head of merged list */
 ){
-  int rc = SQLITE_OK;
   SorterRecord *pFinal = 0;
   SorterRecord **pp = &pFinal;
   void *pVal2 = p2 ? p2->pVal : 0;
 
   while( p1 && p2 ){
     int res;
-    rc = vdbeSorterCompare(pCsr, 0, p1->pVal, p1->nVal, pVal2, p2->nVal, &res);
-    if( rc!=SQLITE_OK ){
-      *pp = 0;
-      vdbeSorterRecordFree(db, p1);
-      vdbeSorterRecordFree(db, p2);
-      vdbeSorterRecordFree(db, pFinal);
-      *ppOut = 0;
-      return rc;
-    }
+    vdbeSorterCompare(pCsr, 0, p1->pVal, p1->nVal, pVal2, p2->nVal, &res);
     if( res<=0 ){
       *pp = p1;
       pp = &p1->pNext;
@@ -502,9 +487,7 @@ static int vdbeSorterMerge(
     }
   }
   *pp = p1 ? p1 : p2;
-
   *ppOut = pFinal;
-  return SQLITE_OK;
 }
 
 /*
@@ -513,7 +496,6 @@ static int vdbeSorterMerge(
 ** occurs.
 */
 static int vdbeSorterSort(sqlite3 *db, VdbeCursor *pCsr){
-  int rc = SQLITE_OK;
   int i;
   SorterRecord **aSlot;
   SorterRecord *p;
@@ -528,30 +510,22 @@ static int vdbeSorterSort(sqlite3 *db, VdbeCursor *pCsr){
   while( p ){
     SorterRecord *pNext = p->pNext;
     p->pNext = 0;
-    for(i=0; rc==SQLITE_OK && aSlot[i]; i++){
-      rc = vdbeSorterMerge(db, pCsr, p, aSlot[i], &p);
+    for(i=0; aSlot[i]; i++){
+      vdbeSorterMerge(db, pCsr, p, aSlot[i], &p);
       aSlot[i] = 0;
     }
-    if( rc!=SQLITE_OK ){
-      vdbeSorterRecordFree(db, pNext);
-      break;
-    }
     aSlot[i] = p;
     p = pNext;
   }
 
   p = 0;
   for(i=0; i<64; i++){
-    if( rc==SQLITE_OK ){
-      rc = vdbeSorterMerge(db, pCsr, p, aSlot[i], &p);
-    }else{
-      vdbeSorterRecordFree(db, aSlot[i]);
-    }
+    vdbeSorterMerge(db, pCsr, p, aSlot[i], &p);
   }
   pSorter->pRecord = p;
 
   sqlite3_free(aSlot);
-  return rc;
+  return SQLITE_OK;
 }
 
 
@@ -894,14 +868,12 @@ int sqlite3VdbeSorterCompare(
   Mem *pVal,                      /* Value to compare to current sorter key */
   int *pRes                       /* OUT: Result of comparison */
 ){
-  int rc;
   VdbeSorter *pSorter = pCsr->pSorter;
   void *pKey; int nKey;           /* Sorter key to compare pVal with */
 
   pKey = vdbeSorterRowkey(pSorter, &nKey);
-  rc = vdbeSorterCompare(pCsr, 1, pVal->z, pVal->n, pKey, nKey, pRes);
-  assert( rc!=SQLITE_OK || pVal->db->mallocFailed || (*pRes)<=0 );
-  return rc;
+  vdbeSorterCompare(pCsr, 1, pVal->z, pVal->n, pKey, nKey, pRes);
+  return SQLITE_OK;
 }
 
 #endif /* #ifndef SQLITE_OMIT_MERGE_SORT */