SQLite

Check-in [6f33050115]
Login

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

Overview
Comment:Hold the database mutex for the duration of sqlite3session_diff().
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | sessions
Files: files | file ages | folders
SHA1: 6f33050115562833c43da3c99dd37aeb0bf966b6
User & Date: dan 2015-04-17 11:31:08.304
Context
2015-04-20
01:32
Merge all recent trunk enhancements and fixes into the sessions branch. (check-in: b8ef1cdee3 user: drh tags: sessions)
2015-04-17
11:31
Hold the database mutex for the duration of sqlite3session_diff(). (check-in: 6f33050115 user: dan tags: sessions)
2015-04-16
13:52
Fix a stray backslash character in a printf format string in sessionDiffFindModified() (check-in: abb192a1d7 user: drh tags: sessions)
Changes
Unified Diff Ignore Whitespace Patch
Changes to ext/session/sqlite3session.c.
1451
1452
1453
1454
1455
1456
1457

1458
1459
1460
1461
1462
1463
1464
  const char *zDb = pSession->zDb;
  int rc = pSession->rc;
  SessionDiffCtx d;

  memset(&d, 0, sizeof(d));
  sessionDiffHooks(pSession, &d);


  if( pzErrMsg ) *pzErrMsg = 0;
  if( rc==SQLITE_OK ){
    char *zExpr = 0;
    sqlite3 *db = pSession->db;
    SessionTable *pTo;            /* Table zTbl */

    /* Locate and if necessary initialize the target table object */







>







1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
  const char *zDb = pSession->zDb;
  int rc = pSession->rc;
  SessionDiffCtx d;

  memset(&d, 0, sizeof(d));
  sessionDiffHooks(pSession, &d);

  sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db));
  if( pzErrMsg ) *pzErrMsg = 0;
  if( rc==SQLITE_OK ){
    char *zExpr = 0;
    sqlite3 *db = pSession->db;
    SessionTable *pTo;            /* Table zTbl */

    /* Locate and if necessary initialize the target table object */
1517
1518
1519
1520
1521
1522
1523

1524
1525
1526
1527
1528
1529
1530
    }

    sqlite3_free(zExpr);
  }

 diff_out:
  sessionPreupdateHooks(pSession);

  return rc;
}

/*
** Create a session object. This session object will record changes to
** database zDb attached to connection db.
*/







>







1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
    }

    sqlite3_free(zExpr);
  }

 diff_out:
  sessionPreupdateHooks(pSession);
  sqlite3_mutex_leave(sqlite3_db_mutex(pSession->db));
  return rc;
}

/*
** Create a session object. This session object will record changes to
** database zDb attached to connection db.
*/