/ Changes On Branch savepoint-rollback
Login

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

Changes In Branch savepoint-rollback Excluding Merge-Ins

This is equivalent to a diff from 0c66cf0f0a to 01d97e5b65

2017-02-02
20:32
Ensure that all cursors have their positions saved prior to rolling back a savepoint. (check-in: 8e03a8e95f user: drh tags: trunk)
19:24
Fix issues in the sha1 extension seen with MSVC. (check-in: 5a0da77c22 user: mistachkin tags: trunk)
02:28
Use the sqlite3_blob interface for reading values from the %_node shadow table in RTREE. This is a work in progress. There are still some minor problems. (check-in: fc4917d730 user: drh tags: rtree-sqlite3_blob)
00:46
This is an experimental patch that ensures that all cursors have their position saved prior to starting a ROLLBACK TO. (Closed-Leaf check-in: 01d97e5b65 user: drh tags: savepoint-rollback)
2017-02-01
23:06
Fix harmless compiler warnings seen with MSVC. (check-in: 0c66cf0f0a user: mistachkin tags: trunk)
23:03
Backout the change in [02f6293f27] as it causes MSVC to complain. (check-in: aaae74d06f user: mistachkin tags: trunk)
22:43
Fix harmless compiler warnings seen with MSVC. (Closed-Leaf check-in: 997f765bc6 user: mistachkin tags: msvcWarn)

Changes to src/btree.c.

4034
4035
4036
4037
4038
4039
4040




4041


4042
4043
4044
4045
4046
4047
4048
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044

4045
4046
4047
4048
4049
4050
4051
4052
4053







+
+
+
+
-
+
+







int sqlite3BtreeSavepoint(Btree *p, int op, int iSavepoint){
  int rc = SQLITE_OK;
  if( p && p->inTrans==TRANS_WRITE ){
    BtShared *pBt = p->pBt;
    assert( op==SAVEPOINT_RELEASE || op==SAVEPOINT_ROLLBACK );
    assert( iSavepoint>=0 || (iSavepoint==-1 && op==SAVEPOINT_ROLLBACK) );
    sqlite3BtreeEnter(p);
    if( op==SAVEPOINT_ROLLBACK ){
      rc = saveAllCursors(pBt, 0, 0);
    }
    if( rc==SQLITE_OK ){
    rc = sqlite3PagerSavepoint(pBt->pPager, op, iSavepoint);
      rc = sqlite3PagerSavepoint(pBt->pPager, op, iSavepoint);
    }
    if( rc==SQLITE_OK ){
      if( iSavepoint<0 && (pBt->btsFlags & BTS_INITIALLY_EMPTY)!=0 ){
        pBt->nPage = 0;
      }
      rc = newDatabase(pBt);
      pBt->nPage = get4byte(28 + pBt->pPage1->aData);