SQLite4
Check-in [24aea74e9f]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix another bug in level merging.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 24aea74e9f053d67e4c41c7b57eb7a123620e1eb
User & Date: dan 2014-01-23 18:00:08
Context
2014-01-23
19:00
And another bug in merging. check-in: 1b27f1ca1e user: dan tags: trunk
18:00
Fix another bug in level merging. check-in: 24aea74e9f user: dan tags: trunk
2014-01-21
20:40
Fix a problem with BT_SEEK_GE on the merge-tree when it contains partially merged deletes. check-in: 0d9860b35b user: dan tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/bt_main.c.

3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
....
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
          rc = SQLITE4_OK;
        }
      }
      if( rc==SQLITE4_OK ){
        if( pKey ){
          const void *pData; int nData;
          int res = btKeyCompare(pMKey + 8, nMKey - 8, pKey, nKey);
          if( res>=0 ){
            break;
          }
          btCsrData(&mcsr, 0, 4, &pData, &nData);
          iRoot = btGetU32(pData);
        }
        rc = sqlite4BtDelete(&mcsr.base);
      }
................................................................................
    nKey = pSub->ovfl.nKey;

    if( rc==SQLITE4_OK ){
      int bFastInsertOp = db->bFastInsertOp;
      db->bFastInsertOp = 1;
      rc = sqlite4BtReplace(db, pKey, nKey, 0, -1);
      db->bFastInsertOp = bFastInsertOp;
#if 0
static int iCall = 0;
sqlite4BtDebugTree(db, ++iCall, 513); 
#endif
    }

  }
  return rc;
}

int sqlite4BtSetCookie(bt_db *db, unsigned int iVal){







|







 







<
<
<
<







3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
....
4741
4742
4743
4744
4745
4746
4747




4748
4749
4750
4751
4752
4753
4754
          rc = SQLITE4_OK;
        }
      }
      if( rc==SQLITE4_OK ){
        if( pKey ){
          const void *pData; int nData;
          int res = btKeyCompare(pMKey + 8, nMKey - 8, pKey, nKey);
          if( res>0 ){
            break;
          }
          btCsrData(&mcsr, 0, 4, &pData, &nData);
          iRoot = btGetU32(pData);
        }
        rc = sqlite4BtDelete(&mcsr.base);
      }
................................................................................
    nKey = pSub->ovfl.nKey;

    if( rc==SQLITE4_OK ){
      int bFastInsertOp = db->bFastInsertOp;
      db->bFastInsertOp = 1;
      rc = sqlite4BtReplace(db, pKey, nKey, 0, -1);
      db->bFastInsertOp = bFastInsertOp;




    }

  }
  return rc;
}

int sqlite4BtSetCookie(bt_db *db, unsigned int iVal){